windows的圖形設(shè)備接口及windows繪圖課件

windows的圖形設(shè)備接口及windows繪圖課件

ID:13848441

大?。?76.50 KB

頁數(shù):53頁

時(shí)間:2018-07-24

windows的圖形設(shè)備接口及windows繪圖課件_第1頁
windows的圖形設(shè)備接口及windows繪圖課件_第2頁
windows的圖形設(shè)備接口及windows繪圖課件_第3頁
windows的圖形設(shè)備接口及windows繪圖課件_第4頁
windows的圖形設(shè)備接口及windows繪圖課件_第5頁
資源描述:

《windows的圖形設(shè)備接口及windows繪圖課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、第4章Windows的圖形設(shè)備接口及Windows繪圖Windows圖形設(shè)備接口(GDI)是為與設(shè)備無關(guān)的圖形設(shè)計(jì)的。所謂設(shè)備的無關(guān)性,就是操作系統(tǒng)屏蔽了硬件設(shè)備的差異,因而設(shè)備無關(guān)性能使用戶編程時(shí)無需考慮特殊的硬件設(shè)置。Windows支持與設(shè)備無關(guān)的圖形利用GDI和Windows設(shè)備驅(qū)動(dòng)程序開發(fā)人員只要建立與輸出設(shè)備的關(guān)聯(lián),讓系統(tǒng)加載相應(yīng)的設(shè)備驅(qū)動(dòng)程序即可一、圖形設(shè)備接口(GDI)GDI負(fù)責(zé)系統(tǒng)與用戶或繪圖程序之間的信息交換,并控制在輸出設(shè)備上顯示圖形或文字,是Windows系統(tǒng)的重要組成部分。設(shè)備描述表即為設(shè)備環(huán)境的屬性的集合。應(yīng)用程序與輸出設(shè)備

2、之間的橋梁Win系統(tǒng)外設(shè)直接訪問不允許統(tǒng)一的設(shè)備環(huán)境(DC)提供使應(yīng)用程序與設(shè)備相連用戶為確保圖形輸出的設(shè)備無關(guān)性1.GDI的一些基本概念應(yīng)用程序設(shè)備描述表及其屬性通過設(shè)備描述表的句柄來間接地存取應(yīng)用程序每一次圖形操作均參照設(shè)備描述表中的屬性執(zhí)行圖形刷新是繪圖過程中必須考慮的重要問題刷新請求對刷新請求的響應(yīng)刷新方法包括(1)刷新請求應(yīng)用程序在窗口中繪制了一個(gè)橢圓,顏色列表框覆蓋了橢圓的一部分關(guān)閉顏色選框后,應(yīng)用程序需要恢復(fù)被覆蓋部分的顏色和形狀窗口大小的調(diào)整窗口移動(dòng)被覆蓋后的恢復(fù)2.圖形刷新(2)系統(tǒng)對刷新請求的響應(yīng)當(dāng)用戶區(qū)的內(nèi)容需要刷新時(shí),系統(tǒng)向應(yīng)

3、用程序消息隊(duì)列發(fā)送WM_PAINT消息,系統(tǒng)在應(yīng)用程序的消息隊(duì)列中加入該消息,以通知窗口函數(shù)執(zhí)行刷新處理三種刷新窗口移動(dòng)后的刷新被覆蓋區(qū)域的刷新對象穿越后的刷新(系統(tǒng)自動(dòng)完成)用戶區(qū)移動(dòng)或顯示用戶窗口大小改變程序通過滾動(dòng)條滾動(dòng)窗口窗口被另一個(gè)窗口覆蓋的恢復(fù)如下拉式菜單關(guān)閉等光標(biāo)穿過用戶區(qū)圖標(biāo)拖過用戶區(qū)窗口被另一個(gè)窗口覆蓋的區(qū)域稱為無效區(qū)域。Windows系統(tǒng)為每個(gè)窗口建立了一個(gè)PAINTSTRUCT結(jié)構(gòu),該結(jié)構(gòu)中包含了包圍無效區(qū)域的一個(gè)最小矩形的結(jié)構(gòu)RECT,應(yīng)用程序可以根據(jù)這個(gè)無效矩形執(zhí)行刷新操作。TypedefstructtagPAINTSTRU

4、CT{HDChdc;//設(shè)備環(huán)境句柄BOOLfErase;//一般取真值,表示擦除無效矩形的背景RECTrcPaint;//無效矩形標(biāo)識(shí)BOOLfRestore;//系統(tǒng)保留BOOLfIncUpdate;//系統(tǒng)保留BYTErgbReserved[16];//系統(tǒng)保留}PAINTSTRUCT;rcPaint為標(biāo)準(zhǔn)的RECT數(shù)據(jù)結(jié)構(gòu),其作用是標(biāo)識(shí)無效矩形,它包含了無效矩形的左上角和右下角的坐標(biāo)常用的Windows應(yīng)用程序刷新窗口的方法保存副本。刷新時(shí)將副本拷貝到相應(yīng)的窗口中記錄事件。刷新時(shí)重新執(zhí)行這個(gè)曾經(jīng)發(fā)生的事件重新繪制。將圖形繪制處理程序放在消息W

5、M_PAINT響應(yīng)模塊中,刷新時(shí)重繪圖形(3)有效的刷新方法獲取設(shè)備環(huán)境是應(yīng)用程序輸出圖形的先決條件,常用的兩種方法是調(diào)用函數(shù)BeginPaint或GetDC(1)調(diào)用BeginPaint函數(shù)應(yīng)用程序響應(yīng)WM_PAINT消息進(jìn)行圖形刷新時(shí),主要通過調(diào)用BeginPaint函數(shù)獲取設(shè)備環(huán)境hdc=BeginPaint(hwnd,&ps);//ps為PAINTSTRUCT類型結(jié)構(gòu)定義方式為:PAINTSTRUCTps;系統(tǒng)獲取設(shè)備環(huán)境的同時(shí)填寫ps結(jié)構(gòu),以標(biāo)識(shí)無效矩形區(qū)由BeginPaint函數(shù)獲取的設(shè)備環(huán)境要用EndPaint函數(shù)釋放voidEndPa

6、int(HWNDhwnd,PAINTSTRUCT&ps)3.獲取設(shè)備環(huán)境的方法(2)調(diào)用GetDC函數(shù)如果繪圖工作并非由WM_PAINT消息驅(qū)動(dòng),則調(diào)用GetDC函數(shù)獲取設(shè)備環(huán)境。hdc=GetDC(hwnd);由GetDC函數(shù)獲取的設(shè)備環(huán)境必須用ReleaseDC函數(shù)釋放voidReleaseDC(HWNDhwnd);映像模式定義了將邏輯單位轉(zhuǎn)化為設(shè)備的度量單位以及設(shè)備的x方向和y方向,程序員可在一個(gè)統(tǒng)一的邏輯坐標(biāo)系中操作而不必考慮輸出設(shè)備的坐標(biāo)系情況。窗口:對應(yīng)邏輯坐標(biāo)系上程序員設(shè)定的區(qū)域視口:對應(yīng)實(shí)際輸出設(shè)備上程序員設(shè)定的區(qū)域窗口和視口如何映射

7、?4.映像模式默認(rèn)的映射模式將窗口中的對稱圖形映射到視口時(shí)仍為對稱圖形按照窗口和視口的坐標(biāo)比例進(jìn)行映射坐標(biāo)系統(tǒng)邏輯坐標(biāo)系統(tǒng)設(shè)備坐標(biāo)系統(tǒng)屏幕坐標(biāo)系統(tǒng)窗口坐標(biāo)系統(tǒng)用戶區(qū)坐標(biāo)系統(tǒng)應(yīng)用程序可獲取設(shè)備環(huán)境的當(dāng)前映像模式,并根據(jù)需要設(shè)置映像模式。相關(guān)函數(shù)設(shè)置設(shè)備環(huán)境的映像模式SetMapMode(hdc,nMapMode);nMapMode為映像模式的整型標(biāo)識(shí)符獲取當(dāng)前設(shè)備環(huán)境的映像模式nMapMode=GetMapMode(hdc);窗口區(qū)域的定義由SetWindowExtEx函數(shù)完成,其函數(shù)原型為:BOOLSetWindowExtEx(HDChdc,intn

8、Height,nWidth,//以邏輯單位表示的窗口區(qū)域高寬度LPSIZElpSize,//函數(shù)調(diào)用前窗口區(qū)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。