Windows繪圖程序設(shè)計(jì)

Windows繪圖程序設(shè)計(jì)

ID:39339372

大?。?.18 MB

頁(yè)數(shù):111頁(yè)

時(shí)間:2019-07-01

Windows繪圖程序設(shè)計(jì)_第1頁(yè)
Windows繪圖程序設(shè)計(jì)_第2頁(yè)
Windows繪圖程序設(shè)計(jì)_第3頁(yè)
Windows繪圖程序設(shè)計(jì)_第4頁(yè)
Windows繪圖程序設(shè)計(jì)_第5頁(yè)
資源描述:

《Windows繪圖程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、第5章Windows繪圖程序設(shè)計(jì)在編寫Windows應(yīng)用程序過(guò)程中,加載位圖或者創(chuàng)建位圖是程序員常用的方法。只有熟練地掌握對(duì)于位圖的有關(guān)操作方法,才能編寫出標(biāo)準(zhǔn)且美觀的應(yīng)用程序。本章主要介紹Windows繪圖程序有關(guān)的知識(shí),并對(duì)繪圖所需要的類進(jìn)行充分講解。通過(guò)本章的學(xué)習(xí),讀者可以掌握各種圖形的繪制及圖像在窗口中的一些操作。圖形設(shè)備接口5.1設(shè)備上下文5.2GDI對(duì)象5.3繪圖函數(shù)5.4畫筆與畫刷5.55.1圖形設(shè)備接口在MS-DOS程序中,通常采用直接向視頻存儲(chǔ)區(qū)或打印機(jī)端口輸送數(shù)據(jù)的方式。但采用這種方式需要各種顯示卡或打印機(jī)驅(qū)動(dòng)程序。為了支持這些設(shè)備

2、,又需要編寫大量不同的代碼來(lái)包含這些驅(qū)動(dòng)程序。為了避免上述問(wèn)題,Windows提供了一個(gè)抽象的接口—圖形設(shè)備接口(GraphicsDeviceInterface,GDI)。5.2設(shè)備上下文設(shè)備上下文(DeviceContext,DC)。設(shè)備上下文是一種包含有關(guān)某個(gè)設(shè)備(如顯示器或打印機(jī))的繪制屬性信息的Windows數(shù)據(jù)結(jié)構(gòu)。下面對(duì)設(shè)備上下文進(jìn)行詳細(xì)介紹。5.2.1設(shè)備上下文介紹在Windows應(yīng)用程序設(shè)計(jì)中,所有繪制調(diào)用都通過(guò)設(shè)備上下文對(duì)象進(jìn)行,這些對(duì)象封裝了用于繪制線條、形狀和文本的WindowsAPI。設(shè)備上下文允許在Windows中進(jìn)行與設(shè)備無(wú)

3、關(guān)的繪制。設(shè)備上下文可用于繪制到屏幕、打印機(jī)或者圖元文件。在Windows應(yīng)用程序中,每個(gè)窗口都關(guān)聯(lián)有設(shè)備上下文。用戶只要獲取到窗口的設(shè)備上下文,就可以在窗口中繪制各種圖形圖像等信息。獲取窗口設(shè)備上下文的函數(shù)是GetDC(),該函數(shù)的原型如下:HDCGetDC(HWNDhWnd);圖5.1程序sample0501的運(yùn)行結(jié)果5.2.2設(shè)備上下文類型1.顯示設(shè)備上下文2.打印機(jī)設(shè)備上下文3.內(nèi)存設(shè)備上下文4.信息設(shè)備上下文5.2.3設(shè)備上下文MFC類在MFC中,為了方便用戶繪圖,提供了一個(gè)設(shè)備上下文類——CDC。CDC類封裝了繪圖所需要的所有成員函數(shù),以及

4、各種類型的Windows設(shè)備上下文的全部功能。此外,CDC還提供了幾個(gè)派生類,如圖5.2所示。1.CDC類在CDC類中存在兩個(gè)成員變量,m_hDC和m_hAttribDC。這兩個(gè)成員變量都是Windows設(shè)備上下文句柄。CDC對(duì)象使用m_hDC對(duì)其所有的成員函數(shù)作輸出調(diào)用,而使用m_hAttribDC對(duì)其所有的成員函數(shù)作屬性調(diào)用。CDC類的構(gòu)造函數(shù)原型如下:圖5.2設(shè)備上下文MFC類CDC::CDC(){m_hDC=NULL;m_hAttribDC=NULL;m_bPrinting=FALSE;}CDC::~CDC(){if(m_hDC!=NULL):

5、:DeleteDC(Detach());}2.CPaintDC類在Windows應(yīng)用程序中,通常在繪制圖像之前調(diào)用函數(shù)BeginPaint(),然后在設(shè)備上下文中進(jìn)行一系列的繪制操作,最后調(diào)用EndPaint函數(shù)結(jié)束繪制。在MFC中,CPaintDC類完全封裝了這一過(guò)程,其機(jī)制是這樣的:在構(gòu)造CPaintDC對(duì)象的同時(shí),其構(gòu)造函數(shù)自動(dòng)調(diào)用BeginPaint()函數(shù);在銷毀CPaintDC對(duì)象的同時(shí),其析構(gòu)函數(shù)自動(dòng)調(diào)用EndPaint()函數(shù)。因此整個(gè)過(guò)程可以簡(jiǎn)化如下:構(gòu)造CDC對(duì)象,執(zhí)行繪制操作,最終銷毀CDC對(duì)象。CPaintDC類是所有CDC類中

6、最常用的一個(gè)類,該類代表了應(yīng)用程序窗口的客戶區(qū),其只能運(yùn)行在CView類中的OnDraw()函數(shù)中。OnDraw()函數(shù)的原型如下:voidCView::OnDraw(CDC*pDC){CDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);}3.CClientDC類與CPaintDC類一樣,CClientDC類所封裝的設(shè)備上下文僅代表一個(gè)窗口的客戶區(qū)。但與CPaintDC類不同的是,CPaintDC類的對(duì)象只能在視圖類的OnDraw()函數(shù)中使用,而CClientDC類的對(duì)象可以在除了OnDraw()函數(shù)之外的任何地方使

7、用。圖5.3程序sample0502的運(yùn)行結(jié)果圖5.4彈出式菜單圖5.5添加單擊消息圖5.6程序sample0503的運(yùn)行結(jié)果4.CWindowDC類CWindowDC類所封裝的設(shè)備上下文表示的是整個(gè)窗口,即不僅包括其客戶區(qū),同時(shí)也包括窗口的邊框及標(biāo)題欄等其他非客戶區(qū)對(duì)象。其構(gòu)造函數(shù)如下:CWindowDC::CWindowDC(CWnd*pWnd){ASSERT(pWnd==NULL

8、

9、::IsWindow(pWnd->m_hWnd));if(!Attach(::GetWindowDC(m_hWnd=pWnd->GetSafeHwnd())))Afx

10、ThrowResourceException();}5.CMetaFileDC類在應(yīng)用程序中,

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

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

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