using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; namespace MECF.Framework.UI.Core.DxfScript { public class DrawingCanvas : Canvas { private DrawingVisual _drawingVisual = new DrawingVisual(); protected override int VisualChildrenCount { get { return 1; } } private DrawingContext _dc = null; private Drawing _drawing = null; public void ClearDrawing() { _drawing = null; } public void SaveDrawing() { _drawing = _drawingVisual.Drawing; } public void LoadDrawing(double x, double y) { if (_drawing != null) { DrawingImage drawingImage = new DrawingImage(_drawing); _dc.DrawImage(drawingImage, new System.Windows.Rect(x + _drawing.Bounds.X, y + _drawing.Bounds.Y, _drawing.Bounds.Width, _drawing.Bounds.Height)); } } protected override Visual GetVisualChild(int index) { if (index == 0) { return _drawingVisual; } throw new ArgumentOutOfRangeException(); } public DrawingCanvas() { this.AddVisualChild(_drawingVisual); } public DrawingContext CreateGraphics() { if (_dc != null) { return _dc; } _dc = _drawingVisual.RenderOpen(); return _dc; } public void Dispose() { if (_dc != null) { _dc.Close(); } _dc = null; } } }