WPF Canvas作为数学图形区域

时间:2014-10-21 12:31:19

标签: c# wpf xaml math canvas

在我的图形计算器中,我使用画布作为渲染函数图形的平面。我注意到每当我输入复杂的函数时(我使用bezier曲线,因此函数越复杂 - >我需要渲染的点越多,使图形看起来更平滑)它变得非常迟钝而且总体上没有'表现不错。

这些解决方案中哪一个计算成本最低/因此是最好的方法?

1。 (我当前的解决方案)在ScrollViewer中使用限制视图区域的巨大Canvas

我发现的缺点:

  • 渲染整个画布,甚至是不可见的部分

  • 当画布上的元素超过50K时,开始滞后

2。仅使用不那么大的Canvas,以及通过TransformMatrix进行平移/缩放管理

缺点我认为可能存在(未尝试解决方案):

  • 当它必须重新绘制并重新计算所有动态时,它会不会更加迟钝?

第3。其他一些解决方案?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果你可以避免它,你真的不想使用离散的视觉效果来表示图表/图形之类的东西;它们很重,并且不断参与输入处理和布局。我建议直接使用WPF的绘图/几何API。我建议实现一个执行自己渲染的自定义控件(参见OnRender)。我还建议实现IScrollInfo,以便您可以管理自己的滚动:您将始终知道视口大小和位置,这使您可以选择在滚动时使几何图形无效,然后重建 >图中实际可见的部分。这应该会显着减少开销。