0

我做了一个类似于AutoCAD的软件,它可以读取和显示dwg文件,并在dwg背景之上绘制直线或曲线。我可以使用鼠标滚轮放大或缩小绘图。

现在遇到绘图效率问题,找不到解决办法,我使用MFC GDI来绘制对象,我已经使用双缓冲来避免闪烁,并且我还使用clipbox来避免绘制不可见的对象。有了这个解决方案,小 dwg 文件就可以了。但是对于大的dwg文件,比如dwg文件有200,000+行,用GDI绘制这些对象的时间大约是2.0+秒,如果我用鼠标滚轮放大或缩小,软件将冻结几秒钟。

所以我想知道这个问题是否有一些解决方案。如果有人能给我一些线索,我们将不胜感激。感谢提前。

4

1 回答 1

0

我相信唯一可能的解决方案是使用 DirectX 或 Direct2D 来显示该数据量。这些技术的区别在比较 Direct2D 和 GDI 硬件加速一文中进行了描述。核心是GDI使用CPU,而Direct2D使用GPU。因此,强制 GDI 渲染大量对象是根本不可能的。相反,由于驱动程序的一些问题,我在 CPU 执行 Direct2D 渲染时遇到了问题。在这种情况下,Direct2D 渲染与 GDI 一样慢。

于 2020-04-28T15:09:14.003 回答