【发布时间】:2021-02-10 17:59:56
【问题描述】:
-
在 uwp 中,需要在不应用变换的情况下将多段线从一个位置平滑平移到另一个具有 3000 多个点的位置。因为,我会在鼠标移动时动态更新点。
-
附上示例供您参考,它被平移但不平滑。
示例链接:https://github.com/ragulsv/PolyLine/tree/master/PolyLineUwp
【问题讨论】:
标签: performance xamarin.forms uwp polyline
在 uwp 中,需要在不应用变换的情况下将多段线从一个位置平滑平移到另一个具有 3000 多个点的位置。因为,我会在鼠标移动时动态更新点。
附上示例供您参考,它被平移但不平滑。
示例链接:https://github.com/ragulsv/PolyLine/tree/master/PolyLineUwp
【问题讨论】:
标签: performance xamarin.forms uwp polyline
当您创建了一个路径组作为ContentControl 的内容时,您可以将其作为一个整体移动,而不是逐点重新定位。
private void Page_PointerMoved(object sender, PointerRoutedEventArgs e)
{
if (pointerPressed)
{
var point = e.GetCurrentPoint(this);
var diff = new Point(pressPointer.X - point.Position.X, pressPointer.Y - point.Position.Y);
contentControl.Margin = new Thickness(-diff.X, -diff.Y, 0, 0);
}
}
在鼠标移动的过程中,逐点重新渲染会消耗大量资源。但是如果是移动ContentControl会简单很多。
【讨论】:
PointerMoved事件时随机加分?可以给pointsCollection加点(重复之前加点的过程),但尽量避免大量和高频渲染,会导致应用卡顿