加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

winapi – Win32 – 什么可能导致不正确的绘图?

发布时间:2021-01-31 16:33:23 所属栏目:系统 来源:网络整理
导读:我正在创建一个游戏,其中在WM_PAINT消息期间完成了大量绘图.窗口失效有几个不同的地方,迫使它重绘.我把所有东西画到了一个屏幕外的DC,然后把它绘制到窗口 – 创建非闪烁的“

每次创建画笔或加载位图时,都会创建一个GDI对象. Windows限制了您可以创建的GDI对象的数量.如果您反复创建对象而不删除它们,您将达到限制并且其他对象的创建将失败.当发生这种情况时,您的显示器看起来会出错 – 您会看到错误的颜色,默认字体等.

任务管理器将显示进程已分配的GDI对象的数量(在“进程”选项卡中,转到“查看”|“选择列”).价值可能会有一点波动,但不应该随着时间的推移而增长.

使用GDI的标准模式是:

>创建对象(例如,使用CreateSolidBrush的画笔).
>使用SelectObject将对象选择到设备上下文中,并记住原始对象(返回值).
>做你的绘画或其他什么.
>使用SelectObject将原始对象选回设备上下文. (当然,这也会从设备上下文中取消选择您的对象.)
>使用DeleteObject删除对象.

您只执行第2步的一半并跳过第4步和第5步.

然后请注意,在每次喷涂操作中都不需要重复步骤1和5.您可以分别将它们移动到程序初始化和终止.并且可以跳过程序终止时的清理,因为OS无论如何都要这样做.

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读