- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
*第4章GDI及Windows绘图*HuangWeitong*第4章GDI及Windows绘图*HuangWeitong*Windows的圖形設備介面及windows繪圖Windows圖形設備介面(GDI)是為與設備無關的圖形設計的。所謂設備的無關性,就是操作系統遮罩了硬體設備的差異,因而設備無關性能使用戶編程時無需考慮特殊的硬體設置一、圖形設備按口(GDI)GDI負責系統與用戶或繪圖程式之間的資訊交換,並控制在輸出設備上顯示圖形或文字,是Windows系統的重要組成部分Windows支持與設備無關的圖形利用GDI和Windows設備驅動程式開發人員只要建立與輸出設備的關聯,讓系統加載相應的設備驅動程式即可1.GDI的一些基本概念設備描述表即為設備環境的屬性的集合應用程式與輸出設備之間的橋樑Win系統外設直接訪問不允許統一的設備環境(DC)提供使應用程式與設備相連用戶為確保圖形輸出的設備無關性應用程式設備描述表及其屬性通過設備描述表的句柄來間接地存取應用程式每一次圖形操作均參照設備描述表中的屬性執行2.圖形刷新圖形刷新是繪圖過程中必須考慮的重要問題刷新請求對刷新請求的回應刷新方法包括(1)刷新請求應用程式在窗口中繪製了一個橢圓,顏色列表框覆蓋了橢圓的一部分關閉顏色選框後,應用程式需要恢複被覆蓋部分的顏色和形狀窗口大小的調整窗口移動被覆蓋後的恢復(2)系統對刷新請求的回應當用戶區的內容需要刷新時,系統向應用程式消息佇列發送WM_PAINT消息,系統在應用程式的消息佇列中加入該消息,以通知窗口函數執行刷新處理三種刷新窗口移動後的刷新被覆蓋區域的刷新對象穿越後的刷新(系統自動完成)用戶區移動或顯示用戶窗口大小改變程式通過滾動條滾動窗口窗口被另一個窗口覆蓋的恢復如下拉式菜單關閉等游標穿過用戶區圖示拖過用戶區窗口被另一個窗口覆蓋的區域稱為無效區域。系統為每個窗口建立了一個PAINTSTRUCT結構,該結構中包含了包圍無效區域的一個最小矩形的結構RECT,應用程式可以根據這個無效矩形執行刷新操作。TypedefstructtagPAINTSTRUCT{HDChdc; //設備環境句柄BOOLfErase; //一般取真值,表示擦除無效矩形的背景RECTrcPaint; //無效矩形標識BOOLfRestore; //系統保留BOOLfIncUpdate; //系統保留BYTErgbReserved[16];//系統保留}PAINTSTRUCT;rcPaint為標準的RECT數據結構,其作用是標識無效矩形,它包含了無效矩形的左上角和右下角的座標常用的Windows應用程式刷新窗口的方法保存副本。刷新時將副本拷貝到相應的窗口中記錄事件。刷新時重新執行這個曾經發生的事件重新繪製。將圖形繪製處理程式放在消息WM_PAINT回應模組中,刷新時重繪圖形(3)有效的刷新方法3.獲取設備環境的方法獲取設備環境是應用程式輸出圖形的先決條件,常用的兩種方法是調用函數BeginPaint或GetDC(1)調用BeginPaint函數應用程式回應WM_PAINT消息進行圖形刷新時,主要通過調用BeginPaint函數獲取設備環境hdc=BeginPaint(hwnd,ps);//ps為PAINTSTRUCT類型結構定義方式為:PAINTSTRUCTps;系統獲取設備環境的同時填寫ps結構,以標識無效矩形區由BeginPaint函數獲取的設備環境要用EndPaint函數釋放voidEndPaint(HWNDhwnd,PAINTSTRUCTps)(2)調用GetDC函數如果繪圖工作並非由WM_PAINT消息驅動,則調用GetDC函數獲取設備環境。hdc=GetDC(hwnd);由GetDC函數獲取的設備環境必須用ReleaseDC函數釋放voidReleaseDC(HWNDhwnd);4.映像模式 映像模式定義了將邏輯單位轉化為設備的度量單位以及設備的x方向和y方向,程式員可在一個統一的邏輯坐標系中操作而不必考慮輸出設備的坐標系情況窗口:對應邏輯坐標系上程式員設定的區域視口:對應實際輸出設備上程式員設定的區域窗口和視口如何映射?缺省的映射模式將窗口中的對稱圖形映射到視口時仍為對稱圖形按照窗口和視口
文档评论(0)