資源描述:
《vc++windows繪圖》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、設(shè)備描述表和圖形對(duì)象設(shè)備描述表與圖形設(shè)備接口MFC的設(shè)備描述表及圖形對(duì)象CDC的繪圖用CDC輸出漢字7.1設(shè)備描述表與圖形設(shè)備接口Windows圖形設(shè)備接口(GDI)是為與設(shè)備無(wú)關(guān)的圖形設(shè)計(jì)的。所謂設(shè)備的無(wú)關(guān)性,就是操作系統(tǒng)屏蔽了硬件設(shè)備的差異,因而設(shè)備無(wú)關(guān)性能使用戶編程時(shí)無(wú)需考慮特殊的硬件設(shè)置圖形設(shè)備接口(GDI)GDI負(fù)責(zé)系統(tǒng)與用戶或繪圖程序之間的信息交換,并控制在輸出設(shè)備上顯示圖形或文字,是Windows系統(tǒng)的重要組成部分Windows支持與設(shè)備無(wú)關(guān)的圖形利用GDI和Windows設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)人員只要建立與輸出設(shè)備的關(guān)聯(lián),讓系統(tǒng)加載相
2、應(yīng)的設(shè)備驅(qū)動(dòng)程序即可21.GDI的一些基本概念設(shè)備描述表即為設(shè)備環(huán)境的屬性的集合應(yīng)用程序與輸出設(shè)備之間的橋梁Win系統(tǒng)外設(shè)直接訪問(wèn)不允許統(tǒng)一的設(shè)備環(huán)境(DC)提供使應(yīng)用程序與設(shè)備相連用戶為確保圖形輸出的設(shè)備無(wú)關(guān)性32.圖形刷新圖形刷新是繪圖過(guò)程中必須考慮的重要問(wèn)題刷新請(qǐng)求對(duì)刷新請(qǐng)求的響應(yīng)刷新方法包括(1)刷新請(qǐng)求應(yīng)用程序在窗口中繪制了一個(gè)橢圓,顏色列表框覆蓋了橢圓的一部分關(guān)閉顏色選框后,應(yīng)用程序需要恢復(fù)被覆蓋部分的顏色和形狀窗口大小的調(diào)整窗口移動(dòng)被覆蓋后的恢復(fù)4(2)系統(tǒng)對(duì)刷新請(qǐng)求的響應(yīng)當(dāng)用戶區(qū)的內(nèi)容需要刷新時(shí),系統(tǒng)向應(yīng)用程序消息隊(duì)列發(fā)送WM_
3、PAINT消息,系統(tǒng)在應(yīng)用程序的消息隊(duì)列中加入該消息,以通知窗口函數(shù)執(zhí)行刷新處理三種刷新窗口移動(dòng)后的刷新被覆蓋區(qū)域的刷新對(duì)象穿越后的刷新(系統(tǒng)自動(dòng)完成)用戶區(qū)移動(dòng)或顯示用戶窗口大小改變程序通過(guò)滾動(dòng)條滾動(dòng)窗口窗口被另一個(gè)窗口覆蓋的恢復(fù)如下拉式菜單關(guān)閉等光標(biāo)穿過(guò)用戶區(qū)圖標(biāo)拖過(guò)用戶區(qū)5常用的Windows應(yīng)用程序刷新窗口的方法保存副本。刷新時(shí)將副本拷貝到相應(yīng)的窗口中記錄事件。刷新時(shí)重新執(zhí)行這個(gè)曾經(jīng)發(fā)生的事件重新繪制。將圖形繪制處理程序放在消息WM_PAINT響應(yīng)模塊中,刷新時(shí)重繪圖形(3)有效的刷新方法67.2MFC設(shè)備描述表-CDC類MFC將設(shè)備描
4、述表(DC)和圖形設(shè)備接口(GDI)封裝在一起做為設(shè)備描述表類-CDC類CDC既包括了設(shè)備屬性又包括了繪圖方法,通過(guò)此方法可以實(shí)現(xiàn)GDI的所有圖形輸出CDC包括了177種函數(shù),還要很多數(shù)據(jù)成員,使用時(shí)特別注意內(nèi)存上的管理,標(biāo)準(zhǔn)使用方法舉例:CDC*pDC=GetDc();//假設(shè)此代碼位于CWnd類調(diào)用函數(shù)申請(qǐng)DC對(duì)象pDC->GetTextMetrics(&tm)//調(diào)用CDC類方法獲取當(dāng)前系統(tǒng)字體信息………ReleaseDC(pDC)//釋放CDC對(duì)象和設(shè)備描述表以釋放內(nèi)存77.3CDC的派生類CDC的幾個(gè)常用派生類-CPaintDC、CC
5、lientDC和CWindowDC1.CPaintDC類-該類用于WM_PAINT消息的處理程序OnPaint()中WM_PAINT消息是在窗口被改變大小、重畫、刷新時(shí)產(chǎn)生CPaintDC類一般用于在OnPaint()函數(shù)中實(shí)現(xiàn)諸如窗口重繪之類等重畫圖形的工作使用CPaintDC類畫圖形例程演示。82.CClientDC類是CDC類中的最常用類CClientDC的析構(gòu)函數(shù)將自動(dòng)調(diào)用ReleaseDC()自動(dòng)釋放設(shè)備描述表可以隨意使用,可在任何時(shí)候使用實(shí)現(xiàn)按下鼠標(biāo)左鍵畫圖例程演示:93.CWindowDC類CWindowDC類可以在任何地方使用,
6、也可以自動(dòng)釋放設(shè)備描述表CWindowDC可以在整個(gè)應(yīng)用程序的窗口上畫圖,這是一般的類所不具備的用CWindowDC類實(shí)現(xiàn)在整個(gè)應(yīng)用程序上畫圖例程:107.4圖形對(duì)象圖形對(duì)象包括畫筆、調(diào)色板、刷子等MFC將這些畫圖工具都?xì)w于一類CGdiObject類,由此派生出具體的繪圖工具類:畫筆(CPen)、刷子(CBrush)、字體(CFont)、位圖(CBitmap)、調(diào)色板(CPalette)、區(qū)域(CRgn)1.畫筆-CPen類-MFC類繪圖的筆,它有樣式、寬度、色彩等屬性CPen容易使用,使用步驟如下:第一步:生成CPen類的對(duì)象第二步:用CPe
7、n:CreatePen()方法創(chuàng)建筆的內(nèi)容第三步:建立CPen與CDC之間的聯(lián)系,使用CDC::SelectObject()第四步:利用畫筆進(jìn)行繪圖操作11畫筆-CPen類使用舉例創(chuàng)建新畫筆,形式如下:CPenMyPen;MyPen.CreatePen(intnPenStyle,//確定畫筆樣式intnWidth,//畫筆寬度COLORREFrgbColor//畫筆顏色);創(chuàng)建畫筆后,必須調(diào)用SelectObject函數(shù)將其選入設(shè)備環(huán)境。SelectObject(CPen*pen);//函數(shù)需要畫筆的指針PS_DASH:虛線PS_DASHDOT
8、:點(diǎn)劃線PS_DASHDOTDOT:雙點(diǎn)劃線PS_DOT:點(diǎn)線PS_INSIDEFRAME:實(shí)線PS_NULL:不可見(jiàn)線PS_SOLID:實(shí)線122.