【问题标题】:Polyline performance issue while moving with more than 3000 points gets too slow [closed]移动超过 3000 个点时的折线性能问题变得太慢 [关闭]
【发布时间】:2021-02-10 17:59:56
【问题描述】:
  • 在 uwp 中,需要在不应用变换的情况下将多段线从一个位置平滑平移到另一个具有 3000 多个点的位置。因为,我会在鼠标移动时动态更新点。

  • 附上示例供您参考,它被平移但不平滑。

示例链接:https://github.com/ragulsv/PolyLine/tree/master/PolyLineUwp

【问题讨论】:

    标签: performance xamarin.forms uwp polyline


    【解决方案1】:

    当您创建了一个路径组作为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加点(重复之前加点的过程),但尽量避免大量和高频渲染,会导致应用卡顿
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多