我正在使用 InkCanvas 在 WPF 中编写基本的图形编辑器。我制作了一些自定义形状(继承自 Stroke)。当我在 InkCanvas 上画线时,我会取第一个点和最后一个点并画一条线。效果很好,但现在我不喜欢默认的“笔触”,所以我决定重写 DynamicRenderer 来实时渲染线条。
问题是,DynamicRenderer 从原点画线到每个笔画点,我显然不希望这样,因为它使“粉丝”插入了线。
有我的自定义代码,如果可能的话,我正在寻找仅从原点到最后一点画线的解决方案。
class LineRenderer : DynamicRenderer
{
private Point firstPoint;
private Pen pen = new Pen(new SolidColorBrush(Colors.Gray),1);
public LineRenderer()
{
firstPoint = new Point(double.PositiveInfinity, double.PositiveInfinity);
}
protected override void OnStylusDown(RawStylusInput rawStylusInput)
{
firstPoint = new Point(rawStylusInput.GetStylusPoints().First().ToPoint().X, rawStylusInput.GetStylusPoints().First().ToPoint().Y);
base.OnStylusDown(rawStylusInput);
}
protected override void OnDraw(DrawingContext drawingContext,
StylusPointCollection stylusPoints,
Geometry geometry, Brush fillBrush)
{
drawingContext.DrawLine(pen, firstPoint, stylusPoints.First().ToPoint());
}
protected override void OnStylusUp(RawStylusInput rawStylusInput)
{
firstPoint = new Point(double.PositiveInfinity, double.PositiveInfinity);
base.OnStylusUp(rawStylusInput);
}
}