MFC經典繪圖清華大學ppt課件_第1頁
MFC經典繪圖清華大學ppt課件_第2頁
MFC經典繪圖清華大學ppt課件_第3頁
MFC經典繪圖清華大學ppt課件_第4頁
MFC經典繪圖清華大學ppt課件_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、MFCMFC繪圖繪圖MFC編程學習的根本目的編程學習的根本目的 可以進展簡單的基于可以進展簡單的基于MFC的圖形界面編程的圖形界面編程 了解了解Windows編程的根本概念。編程的根本概念。 鑒于教學時間進度限制,更復雜的運用程序開發鑒于教學時間進度限制,更復雜的運用程序開發經過自學完成。經過自學完成。 實現根本實現根本MFC運用程序需求掌握如下內容:運用程序需求掌握如下內容: Windows編程根本概念編程根本概念 文檔文檔/視圖構造視圖構造 文檔讀寫文檔讀寫 對話框及規范控件的運用對話框及規范控件的運用 菜單欄的運用菜單欄的運用 繪圖及鼠標音訊的處置繪圖及鼠標音訊的處置主要內容主要內容GD

2、I與設備環境與設備環境DC用用CDC繪圖繪圖運用舉例運用舉例繪圖工具類繪圖工具類圖形設備接口圖形設備接口GDIWindows提供了一個稱為圖形設備接口提供了一個稱為圖形設備接口(Graphics Device Interface,GDI)的籠統接口。的籠統接口。GDI 作為作為Windows的重要組成部分,擔任管理用的重要組成部分,擔任管理用戶繪圖操作時功能的轉換。戶繪圖操作時功能的轉換。用戶經過調用用戶經過調用GDI 函數與設備打交道,函數與設備打交道,GDI 經過經過不同設備提供的驅動程序將繪圖語句轉換為對應不同設備提供的驅動程序將繪圖語句轉換為對應的繪圖指令,防止了用戶對硬件直接進展操作

3、,的繪圖指令,防止了用戶對硬件直接進展操作,從而實現設備無關性顯示器或打印機。從而實現設備無關性顯示器或打印機。GDI的圖形輸出的圖形輸出運用程序可以運用運用程序可以運用GDI 創建如以下圖形輸出創建如以下圖形輸出矢量圖形:畫線和填充圖形,包括點、直線、曲線、矢量圖形:畫線和填充圖形,包括點、直線、曲線、多邊形、扇形和矩形等。多邊形、扇形和矩形等。光柵圖形:經過光柵圖形函數對以位圖方式存儲的光柵圖形:經過光柵圖形函數對以位圖方式存儲的數據進展操作,包括各種位圖和圖標的輸出。數據進展操作,包括各種位圖和圖標的輸出。屏幕:對假設干行和列的像素操作屏幕:對假設干行和列的像素操作打印機:對假設干行和列

4、的點陣輸出打印機:對假設干行和列的點陣輸出直接從內存到顯存的復制操作,速度快,內存要求直接從內存到顯存的復制操作,速度快,內存要求高。高。文本:以圖形方式輸出文本,以邏輯坐標為單位計文本:以圖形方式輸出文本,以邏輯坐標為單位計算輸出位置,而算輸出位置,而DOS是以行為單位。用戶可以設置是以行為單位。用戶可以設置文本的各種效果,如加粗、斜體、設置顏色等。文本的各種效果,如加粗、斜體、設置顏色等。設備環境設備環境運用程序的輸出面向設備環境運用程序的輸出面向設備環境(Device Context,DC),是,是一個虛擬邏輯設備,也稱設備描畫表或設備上下文。設備一個虛擬邏輯設備,也稱設備描畫表或設備上

5、下文。設備環境環境DC 是由是由GDI 創建,用來代表設備銜接的數據構造。創建,用來代表設備銜接的數據構造。DC 的主要功能的主要功能允許運用程序運用一個輸出設備。允許運用程序運用一個輸出設備。提供應用程序、設備驅動和輸出設備之間的銜接。提供應用程序、設備驅動和輸出設備之間的銜接。保管當前信息,例如當前的畫筆、畫刷、字體和位圖等圖保管當前信息,例如當前的畫筆、畫刷、字體和位圖等圖形對象及其屬性,以及顏色和背景等影響圖形輸出的繪圖形對象及其屬性,以及顏色和背景等影響圖形輸出的繪圖方式。方式。保管窗口剪切區域保管窗口剪切區域(Clipping Region),限制程序輸出到輸,限制程序輸出到輸出設

6、備中窗口覆蓋的區域。出設備中窗口覆蓋的區域。設備坐標系統設備坐標系統設備坐標系統設備坐標系統x軸自左至右,軸自左至右,y軸從上到下,坐標原點在軸從上到下,坐標原點在屏幕左上角屏幕左上角0,0XYO主要內容主要內容GDI與設備環境與設備環境DC用用CDC繪圖繪圖運用舉例運用舉例繪圖工具類繪圖工具類設備環境類設備環境類CDCMFC封裝了封裝了DC,提供,提供CDC 類及它的子類以類及它的子類以訪問訪問GDI。CDC類派生自類派生自CObject類,其子類包括類,其子類包括CClientDCCMetaFileDCCPaintDCCWindowDCCObject設備環境類的根本功能設備環境類的根本功能

7、CDC類常用繪圖函數類常用繪圖函數Arc:繪制一段弧:繪制一段弧Chord:繪制弦形:繪制弦形Ellipse:繪制橢圓或圓:繪制橢圓或圓MoveTo:將當前位置挪動到指定位置:將當前位置挪動到指定位置LineTo:從當前位置到指定位置畫一條直線:從當前位置到指定位置畫一條直線Polyline:畫銜接指定點的折線段:畫銜接指定點的折線段PolyBezler:根據兩個端點和兩個控制點畫貝塞爾曲線:根據兩個端點和兩個控制點畫貝塞爾曲線Pie:畫冰塊:畫冰塊Polygon:根據兩個或兩個以上的頂點繪制一個多邊形:根據兩個或兩個以上的頂點繪制一個多邊形Rectangle:根據指定的左上角和右下角坐標繪制

8、一個矩形:根據指定的左上角和右下角坐標繪制一個矩形RoundRect:畫圓角矩形:畫圓角矩形SetPixel:畫一個點:畫一個點繪圖顏色繪圖顏色 DWORD類型的類型的COLORREF數據用于存放顏色值數據用于存放顏色值“0 x00bbggrr 低位字節存放紅色強度值低位字節存放紅色強度值 第第2 個字節存放綠色強度值個字節存放綠色強度值 第第3個字節存放藍色強度值個字節存放藍色強度值 高位字節存放高位字節存放0 可用可用RGB宏設置顏色值,將紅、綠、藍分量值轉宏設置顏色值,將紅、綠、藍分量值轉換為換為COLORREF類型的顏色數據類型的顏色數據 COLORREF RGB( BYTE byRe

9、d, / red component of color BYTE byGreen, / green component of color BYTE byBlue / blue component of color );常用顏色對照表常用顏色對照表例:例:COLLORREF red = RGB(255,0,0);在在MFC中獲取中獲取DC在如在如OnDraw等函數中傳送一個指向等函數中傳送一個指向CDC 對象的對象的指針指針如如OnDraw(CDC* pDC);運用構造函數構建對象運用構造函數構建對象普通不構造普通不構造CDC對象對象在在CWnd類的類的OnPaint函數中,定義函數中,定義CP

10、aintDC對對象象CPaintDC dc(this);在在CWnd類的其它函數中,定義類的其它函數中,定義CClientDC和和CWindowDC的對象的對象CClientDC dc(this);CWindowDC dc(this);CClientDC、CPaintDC和和CWindowDC的區別的區別當窗口的某個區域需求重繪時激發窗口重繪音訊當窗口的某個區域需求重繪時激發窗口重繪音訊WM_PAINT,相應音訊,相應音訊處置函數處置函數CWnd:OnPaint將被調用。將被調用。CPaintDC普通只用于普通只用于OnPaint函數函數中,在處置完窗口重繪后,中,在處置完窗口重繪后, CPa

11、intDC對象的析構函數把對象的析構函數把WM_PAINT音音訊從音訊隊列中去除,防止不斷地重繪操作。坐標原點訊從音訊隊列中去除,防止不斷地重繪操作。坐標原點(0,0)是客戶區的是客戶區的左上角。左上角。CClientDC用于特定窗口客戶區窗口中除邊框、標題欄、菜單欄、形用于特定窗口客戶區窗口中除邊框、標題欄、菜單欄、形狀欄外的中間部分的輸出,其構造函數中包含了狀欄外的中間部分的輸出,其構造函數中包含了GetDC,析構函數中包析構函數中包含了含了ReleaseDC,不需求顯式釋放,不需求顯式釋放DC資源。普通用于呼應非重繪音訊資源。普通用于呼應非重繪音訊如鍵盤和鼠標音訊的繪圖操作。坐標原點如鍵

12、盤和鼠標音訊的繪圖操作。坐標原點(0,0)是客戶區的左上角。是客戶區的左上角。CWindowDC在整個運用程序窗口上畫圖,而在整個運用程序窗口上畫圖,而CClientDC和和CPaintDC只只能在客戶區繪制圖形;除非要本人繪制窗口邊框和按鈕,否那么普通不能在客戶區繪制圖形;除非要本人繪制窗口邊框和按鈕,否那么普通不用它。坐標原點用它。坐標原點(0,0)是屏幕的左上角。是屏幕的左上角。Windows系統發送系統發送WM_PAINT音訊的時機音訊的時機第一次創建一個窗口時第一次創建一個窗口時改動窗口的大小時改動窗口的大小時把窗口從另一個窗口背后移出時把窗口從另一個窗口背后移出時窗口顯示數據變化時

13、,運用程序引發重繪窗口顯示數據變化時,運用程序引發重繪操作操作經過經過CWnd:Invalidate、CWnd:InvalidateRect或或CWnd:InvalidateRgn函數把指定區域加函數把指定區域加到窗口的到窗口的Update Region中。中。窗口的窗口的Update Region不為空時,系統會不為空時,系統會自動產生自動產生WM_PAINT音訊。音訊。OnDraw與與OnPaint的區別的區別 OnDraw是是CView類的成員函數,不呼應音訊;類的成員函數,不呼應音訊;OnPaint是是CWnd類的成員函數,相應類的成員函數,相應WM_PAINT音訊。音訊。 CView

14、默許調用的默許調用的OnPaint函數如下函數如下void CView:OnPaint() CPaintDC dc(this); OnPrepareDC(&dc); OnDraw(&dc); /調用了調用了OnDraw 可見可見OnPaint函數也調用了函數也調用了CView:OnDraw函數。因此普函數。因此普通在通在OnDraw函數內添加繪圖代碼,完成繪圖義務函數內添加繪圖代碼,完成繪圖義務主要內容主要內容GDI與設備環境與設備環境DC用用CDC繪圖繪圖運用舉例運用舉例繪圖工具類繪圖工具類舉例舉例編寫一個單文檔編寫一個單文檔MFC運用程序,完成以下要求:運用程序,完成以下要求:1在客戶區中

15、畫最大的橢圓,在客戶區中畫最大的橢圓,2當點擊鼠當點擊鼠標左鍵時,以鼠標左鍵點擊的位置為中心,畫一標左鍵時,以鼠標左鍵點擊的位置為中心,畫一個半徑為個半徑為20個像素的圓。個像素的圓。建立一個單文檔的建立一個單文檔的MFC工程工程DrawTest1繪制橢圓方法一:修正繪制橢圓方法一:修正CView類的虛函數類的虛函數OnDraw函數函數CWnd:GetClientRect得到客戶區域的大得到客戶區域的大小小添加繪圖代碼添加繪圖代碼繪制橢圓方法二:在繪制橢圓方法二:在OnPaint函數中添加繪圖函數中添加繪圖代碼代碼添加添加WM_PAINT音訊處置函數音訊處置函數OnPaint調用調用OnPre

16、pareDC和和OnDraw函數,添加繪圖函數,添加繪圖代碼代碼需求添加需求添加的代碼的代碼鼠標點擊音訊處置函數鼠標點擊音訊處置函數 在類視圖中選中在類視圖中選中CDrawTest1View類類 在屬性窗口中選擇在屬性窗口中選擇“WM_LBUTTONDOWN音訊,添加音訊處置函數音訊,添加音訊處置函數需求添加需求添加的代碼的代碼主要內容主要內容GDI與設備環境與設備環境DC用用CDC繪圖繪圖運用舉例運用舉例繪圖工具類繪圖工具類繪圖工具類主要包括畫筆繪圖工具類主要包括畫筆CPen、畫刷、畫刷Cbrush、字、字體體CFont、位圖、位圖Bitmap和調色板和調色板Cpalette等。等。類承繼關

17、系如圖類承繼關系如圖CObject繪圖工具類繪圖工具類CGdiObjectCPen類:類:GDI 畫筆,用于畫線。默許的畫筆用于繪制畫筆,用于畫線。默許的畫筆用于繪制與一個像素等寬的黑色實線。與一個像素等寬的黑色實線。CBrush類:類:GDI 畫刷,用來填充一個封鎖圖形對象畫刷,用來填充一個封鎖圖形對象(如如矩形、圓形矩形、圓形)的內部區域,默許的畫刷顏色是白色。的內部區域,默許的畫刷顏色是白色。CFont類:類:GDI字體,用來繪制文本,可設置文字的大字體,用來繪制文本,可設置文字的大小、能否加粗、能否斜體、能否加下劃線等。小、能否加粗、能否斜體、能否加下劃線等。CBitmap類:類:GD

18、I 位圖,用于填充區域。位圖,用于填充區域。CPalette類:類:GDI 調色板,包含系統可用的顏色信息,調色板,包含系統可用的顏色信息,是運用程序和彩色輸出設備環境是運用程序和彩色輸出設備環境(如顯示器如顯示器)的接口。的接口。CRgn類:類:GDI 區域,用于設備環境區域,用于設備環境(通常是窗口通常是窗口)內的內的區域操作,通常和區域操作,通常和CDC類中與裁剪類中與裁剪(clipping)有關的成有關的成員函數配合運用。員函數配合運用。陰影畫刷陰影畫刷BOOL Cbrush:CreateHatchBrush( int nIndex, / 指定陰影款式指定陰影款式COLORREF crColor / 指定陰影顏色指定陰影顏色);創建一個黃色的實心畫刷創建一個黃色的實心畫刷CBrush brush;brush.CreateHatchBrush(HS_DIAGCROSS, RGB(255,255,0);在在OnDraw函數中添加如下代碼,運轉結函數中添

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論