【发布时间】:2017-03-10 23:58:43
【问题描述】:
在使用 win32 C/C++ 编写的系统上工作,它使用 GDI 绘制复杂机器(热交换器)的横截面,大多数编写的代码是基于 C 的(不是 C++,因此没有面向对象编程)。我想知道我是否可以在这个系统中使用 GDI+。
目前所有代码都使用基本的 GDI 原语,如 HPEN、HBRUSH、Polygon()、Rectangle()、MoveToEx()、LineTo()、DrawText() 等。启用或开始使用 GDI+ 的一个很好的理由是绘制组件通知工具提示的上下文详细信息,请参阅此 SO question。我读过 GDI+ 的字体渲染不如 GDI 高效 (link)。
总结一下,我可以在这个老旧的系统上使用 GDI+(重写是不可能的,因为它有一个庞大的代码库)。其次,如果我迁移到 GDI+,性能会受到影响吗?
【问题讨论】:
-
您可以使用任何您想要的系统进行绘制,最坏的情况是您甚至可以开始使用 GDI 在位图上绘制,然后继续使用 GDI+,最后在屏幕上或最初 GDI 的任何位置上对位图进行 blit画了;从屏幕上绘制到在位图上绘制遗留代码部分的切换应该只是在 DC 创建中。对于性能影响,没有比直接衡量更好的方法了。
-
使用底层的基于 C 的 api 并非不可能,但它肯定是残酷和不寻常的惩罚,而且文档很少。是时候向这个项目添加一些 C++ 代码了,声明你的 C++ 绘画辅助函数
extern "C"这样链接器会很高兴。
标签: c performance winapi gdi+ gdi