我正在开发一个程序,该程序将有许多 DIB 位图(由 创建CreateDIBSection),并且必须使用 Win API 在它们上绘制大量文本。
为了在位图上绘图,Windows 需要由CreateCompatibleDC.
现在有两种方法:
我可以为每个位图创建一次 DC,用它来绘制并在释放位图时将其删除。
或者,只有当我需要绘制位图、调用绘制函数并删除 DC 时,我才可以创建 DC。
更好的方法是什么?我更喜欢第一个,因为调用较少 - 这将使我的代码更小并且速度更快一些。
但是为每个位图持有一个长期存在的 DC 是不是太昂贵了?
Edit1:该应用程序实际上是一个 GUI 工具包库,将来可以以不同且不可预测的方式使用,因此我需要一个平衡的决策,以实现最大可能的性能和最小的系统资源使用。
每个进程和每个会话的GDI 对象都是有限的。您正在与同一会话中运行的所有其他进程竞争资源。考虑到这一点,您应该仅在需要时才使用 GDI 资源(问题中的选项 2)。
\nMark Russinovich 的博客文章突破 Windows 的极限:USER 和 GDI 对象 \xe2\x80\x93 第 2 部分介绍了相当多的细节。总而言之,下面列出了窗口管理器对 GDI 资源设置的限制:
\n| 归档时间: |
|
| 查看次数: |
995 次 |
| 最近记录: |