在我的图形计算器中,我使用画布作为渲染函数图形的平面。我注意到每当我输入复杂的函数时(我使用bezier曲线,因此函数越复杂 - >我需要渲染的点越多,使图形看起来更平滑)它变得非常迟钝而且总体上没有'表现不错。
这些解决方案中哪一个计算成本最低/因此是最好的方法?
1。 (我当前的解决方案)在ScrollViewer中使用限制视图区域的巨大Canvas
我发现的缺点:
渲染整个画布,甚至是不可见的部分
当画布上的元素超过50K时,开始滞后
2。仅使用不那么大的Canvas,以及通过TransformMatrix进行平移/缩放管理
缺点我认为可能存在(未尝试解决方案):
第3。其他一些解决方案?
非常感谢任何帮助。
答案 0 :(得分:1)
如果你可以避免它,你真的不想使用离散的视觉效果来表示图表/图形之类的东西;它们很重,并且不断参与输入处理和布局。我建议直接使用WPF的绘图/几何API。我建议实现一个执行自己渲染的自定义控件(参见OnRender
)。我还建议实现IScrollInfo
,以便您可以管理自己的滚动:您将始终知道视口大小和位置,这使您可以选择在滚动时使几何图形无效,然后重建 >图中实际可见的部分。这应该会显着减少开销。