如何使用GDI或Qt提高大量对象的绘制效率

问题描述 投票:0回答:1

我已经制作了类似于AutoCAD的软件,该软件可以读取和显示dwg文件,并在dwg背景上绘制线条或曲线。而且我可以使用鼠标滚轮来放大或缩小绘图。

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

所以我想知道是否有解决此问题的方法。如果有人可以给我一些线索,将不胜感激。感谢您的进步。

performance visual-c++ draw gdi
1个回答
0
投票

我相信唯一可能的解决方案是使用DirectX或Direct2D显示该数据量。Comparing Direct2D and GDI Hardware Acceleration文章中介绍了这些技术的差异。核心是GDI使用CPU,而Direct2D使用GPU。因此,根本不可能强迫GDI渲染大量对象。相反,由于驱动程序存在一些问题,当CPU执行Direct2D渲染时,我遇到了一个问题。在这种情况下,Direct2D渲染的速度与GDI一样慢。

© www.soinside.com 2019 - 2024. All rights reserved.