Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt

Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt

ID:50030256

大?。?.75 MB

頁數(shù):110頁

時間:2020-03-07

Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt_第1頁
Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt_第2頁
Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt_第3頁
Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt_第4頁
Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt_第5頁
資源描述:

《Windows程序設(shè)計教程 第2版 教學(xué)課件 作者 王秀梅 第5章-Windows繪圖程序設(shè)計.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫

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

2、ndows提供了一個抽象的接口—圖形設(shè)備接口(GraphicsDeviceInterface,GDI)。5.2設(shè)備上下文設(shè)備上下文(DeviceContext,DC)。設(shè)備上下文是一種包含有關(guān)某個設(shè)備(如顯示器或打印機)的繪制屬性信息的Windows數(shù)據(jù)結(jié)構(gòu)。下面對設(shè)備上下文進行詳細介紹。5.2.1設(shè)備上下文介紹在Windows應(yīng)用程序設(shè)計中,所有繪制調(diào)用都通過設(shè)備上下文對象進行,這些對象封裝了用于繪制線條、形狀和文本的WindowsAPI。設(shè)備上下文允許在Windows中進行與設(shè)備無關(guān)的繪制。設(shè)備上下文可用于繪制到屏幕、打印機或者圖元文件。在Windows應(yīng)用程序中,每個窗口都關(guān)聯(lián)有設(shè)

3、備上下文。用戶只要獲取到窗口的設(shè)備上下文,就可以在窗口中繪制各種圖形圖像等信息。獲取窗口設(shè)備上下文的函數(shù)是GetDC(),該函數(shù)的原型如下:HDCGetDC(HWNDhWnd);圖5.1程序sample0501的運行結(jié)果5.2.2設(shè)備上下文類型1.顯示設(shè)備上下文2.打印機設(shè)備上下文3.內(nèi)存設(shè)備上下文4.信息設(shè)備上下文5.2.3設(shè)備上下文MFC類在MFC中,為了方便用戶繪圖,提供了一個設(shè)備上下文類——CDC。CDC類封裝了繪圖所需要的所有成員函數(shù),以及各種類型的Windows設(shè)備上下文的全部功能。此外,CDC還提供了幾個派生類,如圖5.2所示。1.CDC類在CDC類中存在兩個成員變量,m_

4、hDC和m_hAttribDC。這兩個成員變量都是Windows設(shè)備上下文句柄。CDC對象使用m_hDC對其所有的成員函數(shù)作輸出調(diào)用,而使用m_hAttribDC對其所有的成員函數(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)::DeleteDC(Detach());}2.CPaintDC類在Windows應(yīng)用程序中,通常在繪制圖像之前調(diào)用函數(shù)BeginPaint(),然后在設(shè)備上下文中進行一系列的繪

5、制操作,最后調(diào)用EndPaint函數(shù)結(jié)束繪制。在MFC中,CPaintDC類完全封裝了這一過程,其機制是這樣的:在構(gòu)造CPaintDC對象的同時,其構(gòu)造函數(shù)自動調(diào)用BeginPaint()函數(shù);在銷毀CPaintDC對象的同時,其析構(gòu)函數(shù)自動調(diào)用EndPaint()函數(shù)。因此整個過程可以簡化如下:構(gòu)造CDC對象,執(zhí)行繪制操作,最終銷毀CDC對象。CPaintDC類是所有CDC類中最常用的一個類,該類代表了應(yīng)用程序窗口的客戶區(qū),其只能運行在CView類中的OnDraw()函數(shù)中。OnDraw()函數(shù)的原型如下:voidCView::OnDraw(CDC*pDC){CDoc*pDoc=Get

6、Document();ASSERT_VALID(pDoc);}3.CClientDC類與CPaintDC類一樣,CClientDC類所封裝的設(shè)備上下文僅代表一個窗口的客戶區(qū)。但與CPaintDC類不同的是,CPaintDC類的對象只能在視圖類的OnDraw()函數(shù)中使用,而CClientDC類的對象可以在除了OnDraw()函數(shù)之外的任何地方使用。圖5.3程序sample0502的運行結(jié)果圖5.4彈出式菜單圖5.5添加單擊消息圖5.6程序sample0503的運行結(jié)果4.CWindowDC類CWindowDC類所封裝的設(shè)備上下文表示的是整個窗口,即不僅包括其客戶區(qū),同時也包括窗口的邊框及

7、標題欄等其他非客戶區(qū)對象。其構(gòu)造函數(shù)如下:CWindowDC::CWindowDC(CWnd*pWnd){ASSERT(pWnd==NULL

8、

9、::IsWindow(pWnd->m_hWnd));if(!Attach(::GetWindowDC(m_hWnd=pWnd->GetSafeHwnd())))AfxThrowResourceException();}5.CMetaFileDC類在應(yīng)用程序中,有時需要重復(fù)顯示一些圖形。如果每

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

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

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