C# UWP Canvas 多段线绘制奇怪的结果
C# UWP Canvas Polyline drawing weird results
我有一个 canvas(不是 InkCanvas!),我可以在上面画画。绘图是由 PointerMoved 事件完成的,因此每次移动指针时,我都会获取指针的当前位置并将其添加到折线点集合中。到目前为止,一切都很好。但是每当我将指针移动非常小的距离时,绘制的线真的很奇怪,如下所示。
(最后一条横线不是bug的一部分,是因为我自动把折线收成了一个多边形)
这是我截取的代码:
private void AddPointToPolyline(Polyline pl, object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != PointerDeviceType.Touch)
{
PointerPoint pt = GetCurrentPointerPosition(sender, e);
if (pl != null && pt != null && pl.Points.Count > 0 && pl.Points.Any())
{
pl.Points.Add(pt.RawPosition);
}
}
}
就像我上面说的,每次移动指针时都会调用此方法。
我尝试实现一种方法来检查两个点是否太近,如果太近则丢弃新点而不是将其放入多段线。但是之后BUG还是出现了,感觉画画不顺手了
有没有什么方法可以在不改变新技术的情况下修复这个错误(我不想使用 InkCanvas)?
像评论中提到的 Clemens:
StrokeLineJoin to a value other than (the default value) Miter
我有一个 canvas(不是 InkCanvas!),我可以在上面画画。绘图是由 PointerMoved 事件完成的,因此每次移动指针时,我都会获取指针的当前位置并将其添加到折线点集合中。到目前为止,一切都很好。但是每当我将指针移动非常小的距离时,绘制的线真的很奇怪,如下所示。
(最后一条横线不是bug的一部分,是因为我自动把折线收成了一个多边形)
这是我截取的代码:
private void AddPointToPolyline(Polyline pl, object sender, PointerRoutedEventArgs e)
{
if (e.Pointer.PointerDeviceType != PointerDeviceType.Touch)
{
PointerPoint pt = GetCurrentPointerPosition(sender, e);
if (pl != null && pt != null && pl.Points.Count > 0 && pl.Points.Any())
{
pl.Points.Add(pt.RawPosition);
}
}
}
就像我上面说的,每次移动指针时都会调用此方法。
我尝试实现一种方法来检查两个点是否太近,如果太近则丢弃新点而不是将其放入多段线。但是之后BUG还是出现了,感觉画画不顺手了
有没有什么方法可以在不改变新技术的情况下修复这个错误(我不想使用 InkCanvas)?
像评论中提到的 Clemens:
StrokeLineJoin to a value other than (the default value) Miter