从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应用程序刷新窗口的方法如下:

    在内存中保持一个显示输出的副本,当需要重绘窗口时,将副本拷贝到相应的窗口中。此方法适于刷新位图等复杂的图形。

    记录曾经发生的事件,在窗口需要刷新时重新调用窗口执行这个事件。

    重新绘制图形,一般对于简单图形常采用重新绘制图形方法执行刷新。

   

posted @ 2011-09-06 00:10  Core Hua  阅读(246)  评论(0)    收藏  举报