窗口被另一个窗口覆盖的区域称为无效区域。 Windows系统为每个窗口建立了一个 PAINTSTRUCT结构,该结构 中包含了包围无效区域的一个最小矩形的结构RECT,应用程序可以 根据这个无效矩形执行刷新操作。 typedef struct tagPAINTSTRUCT HDC hdc //设备环境句柄 B00 L fErase;//一般取真值,表示擦除无效矩形的背景 RECT rePaint //无效矩形标识 BOOL rEstore //系统保留 B00 L fIncUpdate//系统保留 BYTE rgbReserved[32]/系统保留 I PAINTSTRUCT rePaint为标准的RECT数据结构,其 作用是标识无效矩形,它包含了无效 矩形的左上角和右下角的坐标
窗口被另一个窗口覆盖的区域称为无效区域。 Windows系统为每个窗口建立了一个PAINTSTRUCT结构,该结构 中包含了包围无效区域的一个最小矩形的结构RECT,应用程序可以 根据这个无效矩形执行刷新操作。 typedef struct tagPAINTSTRUCT { HDC hdc; //设备环境句柄 BOOL fErase; //一般取真值,表示擦除无效矩形的背景 RECT rcPaint; //无效矩形标识 BOOL fRestore; //系统保留 BOOL fIncUpdate; //系统保留 BYTE rgbReserved[32];//系统保留 }PAINTSTRUCT; rcPaint 为标准的RECT数据结构,其 作用是标识无效矩形,它包含了无效 矩形的左上角和右下角的坐标
(3)有效的刷新方法 记录事件。刷新时 重新执有这个曾经 发生的事作 常用的 Windows 保存副本。刷 应用程序刷新窗 新时将副本拷 口的方法 贝到相应的窗 口中 重新绘制。将图形绘 制处理程序放在消息 WM PAINT响应模 块中,刷新时重绘图 形
常用的Windows 应用程序刷新窗 口的方法 保存副本。刷 新时将副本拷 贝到相应的窗 口中 记录事件。刷新时 重新执行这个曾经 发生的事件 重新绘制。将图形绘 制处理程序放在消息 WM_PAINT响应模 块中,刷新时重绘图 形 (3) 有效的刷新方法
3.获取设备环境的方法 获取设备环境是应用程序输出图形的先决条件,常用的两种方法是调 用函数 Begin paint或 GetDc (1)调用 Begin paint函数 应用程序响应 WM PAINT消息进行图形刷新时,主要通过调用 Begin pain函数获取设备环境 hdc= BeginPaint(hwnd,&ps);//s为PA| NTSTRU0T类型结构 定义方式为: PAINTSTRUCT pS; 系统获取设备环境的 同时填写ps结构,以 标识无效矩形区 由 Begin painti函数获取的设备环境要用 EndPin函数释放 BOOL EndPaint(HWNd hwnd, PAINtSTRUCT &ps)
3. 获取设备环境的方法 获取设备环境是应用程序输出图形的先决条件,常用的两种方法是调 用函数BeginPaint或GetDC (1) 调用BeginPaint函数 应用程序响应WM_PAINT消息进行图形刷新时,主要通过调用 BeginPaint函数获取设备环境 hdc=BeginPaint(hwnd,&ps); //ps为PAINTSTRUCT类型结构 定义方式为:PAINTSTRUCT ps; 系统获取设备环境的 同时填写ps结构,以 标识无效矩形区 由BeginPaint函数获取的设备环境要用EndPaint函数释放 BOOL EndPaint(HWND hwnd, PAINTSTRUCT &ps)
(2)调用GeDC函数 如果绘图工作并非由 WM PAINT消息驱动,则调用 GetLo函数 获取设备环境。 hdc=GetDC(hwnd) 由 GetO函数获取的设备环境必须用 Released函数释放 void ReleaseDC(HWND hwnd) BeginPaint与 GetLo的区别 项目函数 Begin Paint函数 GetS函数 使用环境 只用于图形刷新时获 取设备环境 使用较为广泛 使用 BeginPaint函数「使用 GetO函数获 操作区域 获取设备环境后,操作取设备环境后,操作 区域为无效区域 区域为整个用户区 释放设备环\由 EndPaint函数释放由 ReleaseD函数释 境所用函数 放
(2) 调用GetDC函数 如果绘图工作并非由WM_PAINT消息驱动,则调用GetDC函数 获取设备环境。 hdc=GetDC(hwnd); 由GetDC函数获取的设备环境必须用ReleaseDC函数释放 void ReleaseDC(HWND hwnd); BeginPaint 与 GetDC 的区别 项 目 函 数 BeginPaint 函 数 GetDc 函 数 使用环境 只用于图形刷新时获 取设备环境 使用较为广泛 操作区域 使 用 BeginPaint 函 数 获取设备环境后,操作 区域为无效区域 使 用 GetDC 函数获 取设备环境后,操作 区域为整个用户区 释 放 设 备 环 境所用函数 由 EndPaint 函数释放 由ReleaseDC函数释 放
4.映像模式 映像模式定义了将逻辑单位转化为设备的度量单位以及设备 的x方向和y方向,程序员可在一个统一的逻辑坐标系中操作而不必 考虑输出设备的坐标系情况 窗口:对应逻辑坐标系上程序员设定的区域 视口:对应实际输出设备上程序员设定的区域 窗口和视口 如何映射?
4. 映像模式 映像模式定义了将逻辑单位转化为设备的度量单位以及设备 的x方向和y方向,程序员可在一个统一的逻辑坐标系中操作而不必 考虑输出设备的坐标系情况 窗口:对应逻辑坐标系上程序员设定的区域 视口:对应实际输出设备上程序员设定的区域 窗口和视口 如何映射?