2

首先让我提一下,我浏览了很多很多很多关于 WPF 性能的文章和论坛。我意识到这将接近另一篇文章的转发,但请多多包涵。

首先,我正在 WPF 中创建一个 2D CAD 程序。最初我的想法是使用 Shape 对象并使用内置的命中测试/等。这对于性能来说还不够好,因为我需要在屏幕上显示超过 5000 条线/弧线。

以下是我尝试过的不同方法:

  • 使用 Shape 对象并将它们作为子对象添加到 Canvas

  • 覆盖 Canvas 的 OnRender 方法并使用 DrawingContext

  • 直接创建一个VisualHost并使用DrawingVisuals,仅在DrawingVisual对象发生变化时更新。

在每种情况下,我都面临几乎相同的命运:大约 2000 行时,运动开始拖后腿。具体来说,我可以选择一组线并告诉它们移动。它们对鼠标移动做出反应(如在大多数 CAD 程序中)。等待这些对象赶上的时间相当长。

我在这里不知所措。我已经阅读了我能找到的每一篇文章,但仍然没有找到解决方案。我的下一个选择是回到 GDI+ 来完成我需要的工作,但如果可能的话,我正在寻找 WPF 解决方案。

提前感谢您提供的任何帮助。

4

0 回答 0