【问题标题】:How to improve the drawing efficiency of big number of objects with GDI or Qt如何使用 GDI 或 Qt 提高大量对象的绘制效率
【发布时间】:2020-08-11 22:07:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: performance visual-c++ draw gdi


    【解决方案1】:

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

    【讨论】:

    • 谢谢Drreamer,我试试看。
    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2019-04-27
    • 2015-01-25
    • 2011-11-01
    相关资源
    最近更新 更多