using System;
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()
{
try
{
using (var dc = RenderOpen())
{
Stroke.Draw(dc);
}
}
catch { }
}
private readonly DrawingAttributes _drawingAttributes;
public static implicit operator Stroke(StrokeVisual v)
{
throw new NotImplementedException();
}
}
}