WPF中的2D CAD应用程序

时间:2012-02-06 21:40:23

标签: wpf performance 2d cad

我正在尝试在WPF(.NET 4.0)中编写类似CAD的应用程序,该应用程序需要能够显示许多2D点/线。它将用于在鼠标悬停时显示整个城市的CAD计划,包括缩放,平移,旋转和点捕捉。

现在我纯粹使用WPF。我从CAD文件中读取对象,将它们绘制成StreamGeometry,将其用作新Path的笔划,并将其添加到Canvas中,并进行多次转换。

我的问题是这个解决方案不能很好地扩展。它可以很好地处理小型CAD文件,但是当我想显示半个城市(有房屋和陆地边界)时,它会非常延迟。

我还尝试将我的CAD文件转换为图像,但是 - 32000x32000的分辨率有时是不够的 - 当缩小线条太薄时。

最后,我需要能够将它放在画布(2D / 3D)上作为背景。

这里有什么最好的选择?

谢谢, 尼古拉斯

3 个答案:

答案 0 :(得分:1)

wpf不适合大型3D模型。我怕它太慢了。你最好的选择是直接3D或openGL

然而,即使使用direct3d,openGL的速度,如果你试图展示整个城市,你仍然需要弄清楚如何在渲染场景之前剔除尽可能多的多边形/顶点。

有大量关于此的信息(通常在游戏开发下) 有一些技术包括截头剔除,近距离和远距离剔除。

另外,由于您可能有静态场景,因此可以使用二进制空间分区。

答案 1 :(得分:0)

据我所知,这个主题是WPF中的2D CAD系统。 大!我用它...
OpenGL和DirectX始终处于无限循环OnDraw中。 CPU始终工作。 WPF / Silverlight 2D是智能型号 是的,元素的总量(例如,从Shape继承的基元)必须不是那么多。但有多少?
我测试了自己的应用程序(Silverlight)。我希望WPF会更快一点...... 这是我的2D CAD结果。表现仍然很棒。每个波束由多个基元组成。

Usual mode of task

Performance test - see the amount of Beams

答案 2 :(得分:0)

使用来自Chris Lovett的this one之类的VirtualCanvas。