从Delphi转向VC系列学习二:Windows的图形设备接口及Windows绘图
GDI
Windows图形设备接口(GDI,Graphics Device Interface)是为与设备无关的图形设计的。所谓设备无关性,就是操作系统屏蔽了硬件设备的差异。
GDI的设备无关性是windows操作系统的特色之一。
设备描述列表(Device Context)是一个用来确定任何设备的GDI输出的位置和形象的属性的集合。应用程序不能直接存取设备描述表,但是可以使用设备描述表的句柄间接地存取设备描述表及其属性。
刷新
Windows系统通常通过发送WM_PAINT消息将刷新请求传递给应用程序。
刷新有三种可能:(1)窗口移动后的刷新;(2)被覆盖区域的刷新;(3)对象穿越后的刷新。
windows对刷新请求的响应分为以下三种情况:
(1)窗口移动后的刷新
窗口移动后的刷新可以理解为下列事件的发生,这是系统将向应用程序发送产生WM_PAINT消息:
用户区移动或显示
用户窗口大小改变
程序通过滚动条滚动窗口
(2)被覆盖区域的刷新
当下面的事件发生时,Windows系统将试图保存被覆盖的区域,以备以后刷新。此后如果系统不能有效刷新,则向应用程序发送WM_PAINT消息:
下拉式菜单关闭,并需要恢复被覆盖的部分
Windows清除对话框或消息框等对象,并需要恢复被覆盖的部分
窗口被另一个窗口覆盖的区域称为无效区域。用户区中无效区域的产生可能导致系统向应用程序发送一条消息。
(3)对象穿越后的刷新
对于下面对象穿越后的情况,Windows系统自动完成刷新任务,应用程序不必考虑:
光标穿过用户区
图标拖过用户区
因此,为了执行有效的刷新,应用程序必须全面分析系统可能发送的刷新请求,并根据不同的情况分别进行处理。
刷新的方法
常用的Windows应用程序刷新窗口的方法如下:
在内存中保持一个显示输出的副本,当需要重绘窗口时,将副本拷贝到相应的窗口中。此方法适于刷新位图等复杂的图形。
记录曾经发生的事件,在窗口需要刷新时重新调用窗口执行这个事件。
重新绘制图形,一般对于简单图形常采用重新绘制图形方法执行刷新。

浙公网安备 33010602011771号