3

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

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

我的问题是这个解决方案的扩展性不够好。它适用于小型 CAD 文件,但是当我想显示半个城市(有房屋和土地边界)时,它会非常延迟。

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

最后,我需要能够将其放置在 Canvas(2D/3D)上作为背景。

我在这里最好的选择是什么?

谢谢, 尼克拉斯

4

3 回答 3

1

wpf 不适用于大型 3d 模型。恐怕它太慢了。你最好的选择是直接 3d 或 openGL

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

有大量关于这方面的信息(通常在游戏开发中)有一些技术,包括视锥体剔除、近平面和远平面剔除。

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

于 2012-02-07T00:56:58.387 回答
0

使用来自 Chris Lovett的VirtualCanvas。

于 2013-07-31T22:14:17.963 回答
0

据我了解,主题是 WPF 中的 2D CAD 系统。伟大的!我使用它...
OpenGL 和 DirectX 始终处于无限循环 OnDraw 中。CPU 一直在工作。WPF/Silverlight 2D 是智能模型。
是的,元素的总量(例如,从 Shape 继承的图元)不能太多。但是有多少?
我测试了自己的应用程序(Silverlight)。我希望 WPF 会快一点……这是我的 2D CAD 结果。性能还是很棒的。每个光束由多个基元组成。

常规任务模式

性能测试——查看Beams的数量

于 2013-06-12T00:39:01.303 回答