1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 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;
- }
- }
- }
|