using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; namespace Ink_Canvas.Helpers { public class VisualCanvas : FrameworkElement { protected override Visual GetVisualChild(int index) { return Visual; } protected override int VisualChildrenCount => 1; public VisualCanvas(DrawingVisual visual) { Visual = visual; AddVisualChild(visual); } public DrawingVisual Visual { get; } } /// /// 用于显示笔迹的类 /// public class StrokeVisual : DrawingVisual { /// /// 创建显示笔迹的类 /// public StrokeVisual() : this(new DrawingAttributes() { Color = Colors.Red, //FitToCurve = true, Width = 3, Height = 3 }) { } /// /// 创建显示笔迹的类 /// /// public StrokeVisual(DrawingAttributes drawingAttributes) { _drawingAttributes = drawingAttributes; } /// /// 设置或获取显示的笔迹 /// public Stroke Stroke { set; get; } /// /// 在笔迹中添加点 /// /// public void Add(StylusPoint point) { if (Stroke == null) { var collection = new StylusPointCollection { point }; Stroke = new Stroke(collection) { DrawingAttributes = _drawingAttributes }; } else { Stroke.StylusPoints.Add(point); } } /// /// 重新画出笔迹 /// public void Redraw() { using (var dc = RenderOpen()) { Stroke.Draw(dc); } } private readonly DrawingAttributes _drawingAttributes; } }