visualc面向對象編程教程_08圖形設備接口_第1頁
visualc面向對象編程教程_08圖形設備接口_第2頁
visualc面向對象編程教程_08圖形設備接口_第3頁
visualc面向對象編程教程_08圖形設備接口_第4頁
visualc面向對象編程教程_08圖形設備接口_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、12第15講課 題: 圖形處理(1)目的要求: 讓學生了解圖形設備接口、畫筆和畫刷,掌握基本幾何圖形的繪制。教學重點: 設備環(huán)境、顏色的設置及GDI對象的使用。教學難點: 畫筆及畫刷的使用教學課時: 2課時教學方法: 授課為主、鼓勵課堂交流本次課涉及的學術前沿:3 Windows是一個圖形操作系統(tǒng),其所有的圖形可視效果都是通過繪制操作而完成的。圖形顯示的實質就是利用Windows提供的圖形設備接口將圖形繪制在顯示器上。大多數(shù)應用程序都需要在客戶區(qū)繪制一些圖形,如繪制文本、幾何圖形、位圖和光標等。 前面幾章已經涉及到有關圖形處理的內容,只是使用了Windows系統(tǒng)默認的圖形設備接口和設備環(huán)境,繪

2、制的圖形沒有顏色、線型和字體的變化。4本章主要學習內容:本章主要學習內容: 圖形處理的基本原理: 圖形設備接口圖形設備接口 設備環(huán)境設備環(huán)境 GDI坐標系坐標系 映射模式映射模式 使用畫筆和畫刷繪制圖形 文本與字體 位圖、圖標和光標58.1 圖形設備接口圖形設備接口 Windows提供了一個稱為圖形設備接口GDI(Graphics Device Interface)的抽象接口。GDI作為Windows的重要組成部分,它負責管理用戶繪圖操作時功能的轉換。用戶通過調用GDI函數(shù)與設備打交道,GDI通過不同設備提供的驅動程序將繪圖語句轉換為對應的繪圖指令,避免了直接對硬件進行操作,從而實現(xiàn)所謂的設備

3、無關性。 編程時采用MFC方法繪制圖形也很方便,MFC對GDI函數(shù)和繪圖對象進行了封裝。 6 圖形設備接口GDI管理Windows應用程序圖形的繪制,在應用程序中,通過調用GDI函數(shù)繪制不同尺寸、顏色、風格的幾何圖形、文本和位圖。這些圖形處理函數(shù)組成了圖形設備接口GDI。 GDI是形成Windows核心的三種動態(tài)鏈接庫之一,MFC將GDI函數(shù)封裝在一個名為CDC的設備環(huán)境類中,因此我們可以通過調用CDC類的成員函數(shù)來完成繪圖操作。 所謂設備無關性,是指操作系統(tǒng)屏蔽了硬件設備的差異,使用戶編程時一般無需考慮設備的類型,如不同種類的顯示器或打印機。 8.1.1 概述概述7Windows繪圖過程和設

4、備無關性的實現(xiàn):繪圖過程和設備無關性的實現(xiàn): GDI處于設備驅動程序的上一層,當程序調用繪圖函數(shù)時,GDI將繪圖命令傳送給當前設備的驅動程序,以調用驅動程序提供的接口函數(shù)。驅動程序的接口函數(shù)將Windows繪圖命令轉化為設備能夠執(zhí)行的輸出命令,實現(xiàn)圖形的繪制。不同設備具有不同的驅動程序,設備驅動程序是設備相關的。88.1.2 設備環(huán)境設備環(huán)境為了實現(xiàn)設備無關性,應用程序的輸出不直接面向顯示器等物理設備,而是面向一個稱之為設備環(huán)境DC(Device Context)的虛擬邏輯設備。設備環(huán)境也稱設備描述表或設備上下文,它是由Windows管理的一個數(shù)據(jù)結構,它保存了繪圖操作中一些共同需要設置的信息

5、,如當前的畫筆、畫刷、字體和位圖等圖形對象及其屬性,以及顏色和背景等影響圖形輸出的繪圖模式。形象地說,一個設備環(huán)境提供了一張畫布和一些繪畫的工具,我們可以使用不同顏色的工具在上面繪制點、線、圓和文本。9設備環(huán)境中的“設備”是指任何類型的顯示器或打印機等輸出設備,繪圖時用戶不用關心所使用設備的編程原理和方法。所有的繪制操作必須通過設備環(huán)境進行間接的處理,Windows自動將設備環(huán)境所描述的結構映射到相應的物理設備上。從根本上來說,設備環(huán)境DC是一個Windows數(shù)據(jù)結構,該結構存儲著程序向設備輸出時所需要的信息,應用程序利用它定義圖形對象及其屬性,并實現(xiàn)應用程序、設備驅動程序和輸出設備之間繪圖命

6、令的轉換。在Windows中不使用DC無法進行輸出,在使用任何GDI繪圖函數(shù)之前,必須建立一個設備環(huán)境。10獲取獲取設備環(huán)境設備環(huán)境DC的方法:的方法: 在程序中不能直接存取DC數(shù)據(jù)結構,只能通過系統(tǒng)提供的一系列函數(shù)或使用設備環(huán)境的句柄HDC來間接地獲取或設置設備環(huán)境結構中的各項屬性,如顯示器高度和寬度、支持的顏色數(shù)及分辨率等。 如果采用SDK方法編程,獲取DC的方法有兩種:在WM_PAINT消息處理函數(shù)中通過調用API函數(shù)BeginPaint()獲取設備環(huán)境,在消息處理函數(shù)返回前調用API函數(shù)EndPaint()釋放設備環(huán)境。在其他函數(shù)中通過調用API函數(shù)GetDC()獲取設備環(huán)境,調用AP

7、I函數(shù)ReleaseDC()釋放設備環(huán)境。11 如果采用MFC方法編程,MFC提供了不同類型的DC類,每一個類都封裝了DC句柄,并且它們的構造函數(shù)自動調用獲取DC的API函數(shù),析構函數(shù)自動調用釋放DC的API函數(shù)。因此,在程序中通過聲明一個MFC設備環(huán)境類的對象就自動獲取了一個DC,而當該對象被銷毀時就自動釋放了獲取的DC。MFC AppWizard應用程序向導創(chuàng)建的OnDraw()函數(shù)自動支持所獲取的DC。 MFC的DC類包括CDC、CPaintDC、CClientDC、CWindowDC和CMetaFileDC等,其中CDC類是MFC設備環(huán)境類的基類,其它的MFC設備環(huán)境類都是CDC的派生

8、類。 12 CDC類既作為其它MFC設備環(huán)境類的基類,又可以作為一個一般的設備環(huán)境類使用。利用它可以訪問設備屬性和設置繪圖屬性。CDC類對GDI的所有繪圖函數(shù)進行了封裝。 CPaintDC類是OnPaint()函數(shù)使用的設備環(huán)境類,它 代 表 一 個 窗 口 的 繪 圖 畫 面 。 如 果 添 加WM_PAINT消息處理函數(shù)OnPaint(),就需要使用CPaintDC類來定義一個設備環(huán)境對象。 CClientDC類代表了客戶區(qū)設備環(huán)境。當在客戶區(qū)實時繪圖時,需要利用CClientDC類定義一個客戶區(qū)設備環(huán)境。 CWindowDC類代表了整個程序窗口設備環(huán)境,可以在整個窗口區(qū)域繪圖。 MFC設

9、備環(huán)境類:設備環(huán)境類: 138.1.3 GDI坐標系和映射模式坐標系和映射模式 Windows坐標系分為邏輯坐標系和設備坐標系兩種,GDI支持這兩種坐標系。一般而言,GDI的文本和圖形輸出函數(shù)使用邏輯坐標,而在客戶區(qū)移動或按下鼠標的鼠標位置是采用設備坐標。 邏輯坐標系是面向DC的坐標系,這種坐標不考慮具體的設備類型,在繪圖時,Windows會根據(jù)當前設置的映射模式將邏輯坐標轉換為設備坐標。 設備坐標系是面向物理設備的坐標系,這種坐標以像素或設備所能表示的最小長度單位為單位,X軸方向向右,Y軸方向向下。設備坐標系的原點位置(0, 0)不限定在設備顯示區(qū)域的左上角。14 設備坐標系分為屏幕坐標系、

10、窗口坐標系和客戶區(qū)坐標系三種相互獨立的坐標系。 屏幕坐標系以屏幕左上角為原點,一些與整個屏幕有關的函數(shù)均采用屏幕坐標,如GetCursorPos()、SetCursorPos()、CreateWindow()、MoveWindow()。彈出式菜單使用的也是屏幕坐標。 窗口坐標系以窗口左上角為坐標原點,它包括窗口標題欄、菜單欄和工具欄等范圍。 客戶區(qū)坐標系以窗口客戶區(qū)左上角為原點,主要用于客戶區(qū)的繪圖輸出和窗口消息的處理。鼠標消息的坐標參數(shù)使用客戶區(qū)坐標,CDC類繪圖成員函數(shù)使用與客戶區(qū)坐標對應的邏輯坐標。屏幕坐標系、窗口坐標系和客戶區(qū)坐標系屏幕坐標系、窗口坐標系和客戶區(qū)坐標系15坐標之間的相互

11、轉換坐標之間的相互轉換 編程時,有時需要根據(jù)當前的具體情況進行三種設備坐標之間或與邏輯坐標的相互轉換。 MFC提供了兩個函數(shù)CWnd:ScreenToClient()和CWnd:ClientToScreen()用于屏幕坐標與客戶區(qū)坐標的相互轉換。 MFC提供了兩個函數(shù)CDC:DPtoLP()和CDC: LPtoDP()用于設備坐標與邏輯坐標之間的相互轉換。 16例例 修改例5-13中的程序MyDraw,采用將設備坐標轉換為邏輯坐標的方法實現(xiàn)滾動視圖的功能。 Windows鼠標位置使用設備坐標系,以客戶區(qū)窗口原點作為基準,而在OnDraw()函數(shù)中使用邏輯坐標。因此,為了在滾動視圖中重繪圖形,必

12、須在存儲線段起點和終點之前將其坐標轉換為邏輯坐標。實質上,OnDraw()函數(shù)由OnPaint()函數(shù)調用,在調用OnDraw()函數(shù)前,OnPaint()函數(shù)已經調用了函數(shù)OnPrepareDC()對設備環(huán)境進行了調整。 打開應用程序項目MyDraw,修改單擊鼠標和鼠標移動的消息處理函數(shù)。17void CMyDrawView:OnLButtonDown( UINT nFlags, CPoint point) / TODO: Add your message handler code here . . . CClientDC dc(this);OnPrepareDC(&dc); / 調

13、整設備環(huán)境的屬性調整設備環(huán)境的屬性dc.DPtoLP(&point); / 將設備坐標轉換為邏輯坐標將設備坐標轉換為邏輯坐標SetCapture(); / 捕捉鼠標:SetCursor(m_hCross); / 設置十字光標m_ptOrigin=point;m_bDragging=TRUE; / 設置拖拽標記/CScrollView:OnLButtonDown(nFlags, point);18void CMyDrawView:OnMouseMove(UINT nFlags, CPoint point) if(m_bDragging) CMyDrawDoc *pDoc=GetDocum

14、ent(); ASSERT_VALID(pDoc);CClientDC dc(this);OnPrepareDC(&dc);dc.DPtoLP(&point);pDoc-AddLine(m_ptOrigin, point); dc.MoveTo(m_ptOrigin); dc.LineTo(point);m_ptOrigin=point; /CScrollView:OnMouseMove(nFlags, point);19映射模式映射模式 映射模式確定了在繪制圖形時所依據(jù)的坐標系,它定義了邏輯單位的實際大小、坐標增長方向,所有映射模式的坐標原點均在設備輸出區(qū)域(如客戶區(qū)或打印區(qū)

15、)的左上角。此外,對于某些映射模式,用戶還可以自定義窗口的長度和寬度,設置視圖區(qū)的物理范圍。 Windows定義了8種映射模式:MM_TEXT、MM_LOMETRIC、MM_HIMETRIC、MM_LOE- NGLISH、MM_HIENGLISH、MM_TWIPS、MM _ISOTROPIC、MM_ANISOTROPIC 映射模式使得程序員可不必考慮輸出設備的具體設備坐標系,而在一個統(tǒng)一的邏輯坐標系中進行圖形的繪制。 20映射模式映射模式邏輯單位邏輯單位坐標系設定坐標系設定MM_TEXT一個像素X軸正方向朝右,Y軸正方向朝下MM_LOMETRIC0.1毫米X軸正方向朝右,Y軸正方向朝上MM_H

16、IMETRIC0.01毫米X軸正方向朝右,Y軸正方向朝上MM_LOENGLISH0.01英寸X軸正方向朝右,Y軸正方向朝上MM_HIENGLISH0.001英寸X軸正方向朝右,Y軸正方向朝上MM_TWIPS1/1440英寸X軸正方向朝右,Y軸正方向朝上MM_ISOTROPIC系統(tǒng)確定X、Y軸可任意調節(jié),X、Y軸比例為1:1MM_ANISOTROPIC系統(tǒng)確定X、Y軸可任意調節(jié),X、Y軸比例任意Windows映射模式映射模式 21設置原點的坐標:設置原點的坐標: 通過調用函數(shù)CDC:SetWindowOrg()設置設備環(huán)境的窗口原點的坐標,調用CDC:SetViewportOrg()重新設置設備

17、的視口原點的坐標。這里,窗口是對應于邏輯坐標系(設備環(huán)境)由用戶設定的一個區(qū)域,而視口是對應于實際輸出設備由用戶設定的一個區(qū)域。 窗口原點是指邏輯窗口坐標系的原點在視口(設備)坐標系中的位置,視口原點是指設備實際輸出區(qū)域的原點。 除了映射模式,窗口和視口也是決定一個點的邏輯坐標如何轉換為設備坐標的一個因素。一個點的邏輯坐標按照如下式子轉換為設備坐標: 設備(視口)坐標 = 邏輯坐標 窗口原點坐標 + 視口原點坐標22例例 分別在分別在OnDraw()函數(shù)中添加如下代碼,設置不函數(shù)中添加如下代碼,設置不同的窗口原點和視口原點,結果有什么不同。同的窗口原點和視口原點,結果有什么不同。 (1) pD

18、C-SetMapMode(MM_TEXT); pDC-Rectangle(CRect(50, 50, 100, 100);(2) pDC-SetMapMode(MM_TEXT); pDC-SetWindowOrg(50, 50);pDC-Rectangle(CRect(50, 50, 100, 100);(3) pDC-SetMapMode(MM_TEXT); pDC-SetViewportOrg(50,50);pDC-Rectangle(CRect(50, 50, 100, 100);(4) pDC-SetMapMode(MM_TEXT); pDC-SetViewportOrg(50,50)

19、;pDC-SetWindowOrg(50, 50);pDC-Rectangle(CRect(50, 50, 100, 100);23248.1.4 顏色的設置顏色的設置 Windows用COLORREF類型的數(shù)據(jù)存放顏色,它是一個32位整數(shù)。任何一種顏色都是由紅、綠、藍三種基本顏色組成,COLORREF類型數(shù)據(jù)的低位字節(jié)存放紅色強度值,第2個字節(jié)存放綠色強度值,第3個字節(jié)存放藍色強度值,高位字節(jié)為0,每一種顏色分量的取值范圍為0到255。 直接設置COLORREF數(shù)據(jù)不太方便,Windows提供了RGB宏用于設置顏色,將其中的紅、綠、藍分量值轉換為COLORREF類型的顏色數(shù)據(jù): RGB(by

20、Red, byGreen, byBlue) 其中參數(shù)byRed、byGreen和byBlue分別表示紅、綠、藍分量值(范圍0到255)。25RGB宏的使用:宏的使用: 很 多 涉 及 到 顏 色 的 G D I 函 數(shù) 都 需 要 使 用COLORREF類型的參數(shù),如設置背景色的成員函數(shù)CDC:SetBkColor()、設置文本顏色的成員函數(shù)CDC:SetTextColor()。例如: COLORREF rgbBkClr=RGB(192,192,192);/ 定義灰色 pDC-SetBkCorlor(rgbBkClr);/ 背景色為灰色 pDC-SetTextColor(RGB(0,0,255

21、);/ 文本顏色為蘭色26標準彩色的標準彩色的RGB值值 顏色顏色RGBRGB分量值分量值顏色顏色RGBRGB分量值分量值淺紅255,0,0深紅128,0,0淺綠0,255,0深綠0,128,0淺藍0,0,255深藍0,0,128淺黃255,255,0深黃128,128,0淺青0,255,255深青0,128,128紫色255,0,255灰色192,192,192白色255,255,255黑色0,0,027 在默認狀態(tài)下,當用戶創(chuàng)建一個設備環(huán)境并在其中繪圖時,系統(tǒng)使用設備環(huán)境缺省的繪圖工具及其屬性。如果要使用不同風格和顏色的繪圖工具進行繪圖,用戶必須重新為設備環(huán)境設置自定義的畫筆和畫刷等繪圖工

22、具。 畫筆和畫刷是Windows中兩種最重要的繪圖工具,畫筆用于繪制點、線、矩形和橢圓等幾何圖形,畫刷用指定的顏色和圖案來填充繪圖區(qū)域,這些繪圖工具又統(tǒng)稱為GDI對象。 8.2 畫筆和畫刷畫筆和畫刷 288.2.1 GDI對象對象 Windows GDI提供了一些繪圖對象,程序通過這些GDI對象設置繪圖的工具和風格,這里的對象是指Windows數(shù)據(jù)結構,而不是C+類的對象。 GDI對象是Windows圖形設備接口的抽象繪圖工具。除了畫筆和畫刷,其它GDI對象還包括字體、位圖和調色板。 MFC對GDI對象進行了很好的封裝,提供了封裝GDI對象的類,如CPen、CBrush、CFont、CBitm

23、ap和CPalette等,這些類都是GDI對象類CGdiObject的派生類。 29 CDC類提供了成員函數(shù)SelectObject()選擇用戶自己創(chuàng)建的GDI對象,該函數(shù)有多種重載形式,可以選擇用戶已定制好的畫筆、畫刷、字體和位圖等不同類型的GDI對象。 CPen* SelectObject(CPen* pPen); CBrush* SelectObject(CBrush* pBrush); virtual CFont* SelectObject(CFont* pFont); CBitmap* SelectObject(CBitmap* pBitmap); 函數(shù)參數(shù)是一個指向用戶已定制好的G

24、DI對象的指針,選擇操作成功函數(shù)將返回以前GDI對象的指針,否則返回NULL。選擇一個選擇一個GDI對象對象: 308.2.2 使用畫筆使用畫筆 當用戶創(chuàng)建一個用于繪圖的設備環(huán)境時,該設備環(huán)境自動提供了一個寬度為一個像素單位、風格為實黑線(BLACK_PEN)的缺省畫筆。如果要在設備環(huán)境使用自己的畫筆繪圖,首先需要創(chuàng)建一個指定風格的畫筆,然后將創(chuàng)建的畫筆選入設備環(huán)境,最后,在使用該畫筆繪圖結束后需要釋放該畫筆。 1. 創(chuàng)建畫筆創(chuàng)建畫筆 創(chuàng)建畫筆最簡單的方法是調用CPen類的一個帶參數(shù)的構造函數(shù)來構造一個CPen類畫筆對象,以下代碼創(chuàng)建了一個紅色虛線畫筆: CPen PenNew (PS_DAS

25、H, 1, RGB(255, 0, 0);31 創(chuàng)建畫筆的第二種方法是首先構造一個沒有初始化 的 C P e n 類 畫 筆 對 象 , 然 后 調 用 成 員 函 數(shù)CPen:CreatePen()創(chuàng)建定制的畫筆工具: CPen PenNew; P e n N e w . C r e a t e P e n ( P S _ D A S H , 1 , RGB(255,0,0); 函數(shù)CreatePen()的參數(shù)類型與帶參數(shù)的CPen類構造函數(shù)完全一樣。當畫筆對象的聲明與創(chuàng)建不在同一個地方時(如需要多次改變畫筆)只有采用這種方法。 樣樣 式式說說 明明樣樣 式式說說 明明PS_SOLID實線P

26、S_DASHDOTDOT雙點劃線PS_DOT點線PS_NULL空的邊框PS_DASH虛線PS_INSIDEFRAME邊框實線PS_DASHDOT點劃線32 創(chuàng) 建 畫 筆 后 必 須 調 用 成 員 函 數(shù) C D C : : SelectObject()將創(chuàng)建的畫筆選入當前設備環(huán)境。如果選擇成功,函數(shù)SelectObject()將返回以前畫筆對象的指針。選擇新的畫筆時應該保存以前的畫筆對象,如下代碼所示:CPen* pPenOldpPenOld =pDC-SelectObject(&PenNew); 2. 選擇創(chuàng)建的畫筆選擇創(chuàng)建的畫筆 33 創(chuàng)建和選擇畫筆工具后,應用程序就可以使用該

27、畫筆繪圖。當繪圖完成后,應該通過調用成員函數(shù)CDC:SelectObject()恢復設備環(huán)境以前的畫筆工具,并通過調用成員函數(shù)CGdiObject:DeleteObject()釋放GDI對象所占的內存資源,如下代碼所示: pDC-SelectObject(pPenOld);/ 恢復設備環(huán)境DC中原來的畫筆 PenNew.DeleteObject();/ 刪除底層的GDI對象3. 還原畫筆還原畫筆 34在OnDraw()函數(shù)中添加如下所示的代碼:CPen *pPenOld, PenNew;int nPenStyle= PS_SOLID, / 實線 PS_DOT, / 點線PS_DASH, / 虛

28、線PS_DASHDOT, / 點劃線PS_DASHDOTDOT, / 雙點劃線 PS_NULL, / 空的邊框PS_INSIDEFRAME, / 邊框實線;char *strStyle=Solid,Dot,Dash,DashDot, DashDotDot,Null,InsideFrame;pDC-TextOut(60,10,用不同樣式的畫筆繪圖); 例例 編寫一個SDI應用程序,繪制不同風格、寬度和顏色的直線。 35 for(int i=0; iSelectObject(&PenNew); / 選擇畫筆 pDC-TextOut(10,30+20*i,strStylei);pDC-Mov

29、eTo(100,40+20*i);pDC-LineTo(200,40+20*i);pDC-SelectObject(pPenOld); / 恢復原來的畫筆PenNew.DeleteObject(); / 刪除底層的GDI對象 else MessageBox(不能創(chuàng)建畫筆!); 36char *strWidth=1,2,3,4,5,6,7;pDC-TextOut(260,10,用不同寬度的畫筆繪圖);for(i=0; iSelectObject(&PenNew); / 選擇畫筆pDC-TextOut(260,30+20*i,strWidthi);pDC-MoveTo(300,40+20*

30、i);pDC-LineTo(400,40+20*i);pDC-SelectObject(pPenOld); / 恢復原來的畫筆PenNew.DeleteObject(); / 刪除底層的GDI對象 else MessageBox(不能創(chuàng)建畫筆!); 37 char *strColor=紅,綠,藍,黃,紫,青,灰; COLORREF rgbPenClr=RGB(255,0,0),RGB(0,255,0), RGB(0,0,255),RGB(255,255,0),RGB(255,0,255), RGB(0,255,255),RGB(192,192,192); pDC-TextOut(460,10,

31、用不同顏色的畫筆繪圖); for(i=0; iSelectObject(pPenNew); /選擇創(chuàng)建的畫筆pDC-TextOut(460,30+20*i, strColori);pDC-MoveTo(500,40+20*i);pDC-LineTo(600,40+20*i);pDC-SelectObject(pPenOld); / 恢復原來的畫筆delete pPenNew; / 自動刪除底層的GDI對象 3839 當創(chuàng)建一個設備環(huán)境時,該設備環(huán)境自動提供了一個填充色為白色(WHITE_BRUSH)的缺省畫刷。與畫筆一樣,也可以利用MFC畫刷類CBrush創(chuàng)建自己的畫刷,用于填充圖形的繪制。

32、畫刷有三種基本類型:純色畫刷、陰影畫刷和圖案畫刷,CBrush類提供了多個不同重載形式的構造函數(shù)。以下創(chuàng)建三種不同類型的畫刷:CBrush brush1(RGB(255,0,0);/ 創(chuàng)建純色畫刷CBrush brush2(HS_DIAGCROSS, RGB(0,255,0); / 創(chuàng)建陰影畫刷CBrush brush3(&bmp);/ 創(chuàng)建圖案畫刷8.2.3 使用畫刷使用畫刷 40 創(chuàng)建畫刷也可先構造一個沒有初始化的CBrush類畫刷對象,然后調用CBrush類的初始化成員函數(shù)創(chuàng)建定制的畫刷工具。CBrush類提供的常用創(chuàng)建函數(shù)有:CreateSolidBrush()用指定的顏色創(chuàng)建一個純色畫刷;CreateHatchBrush()用指定的陰影樣式和顏色創(chuàng)建一個陰影畫刷;CreatePatternBrush()用位圖創(chuàng)建一個圖案畫刷;CreateSysColorBrush()用系統(tǒng)默認顏色創(chuàng)建一個指定陰影樣式的畫刷。 如下代碼創(chuàng)建了一個填充色為紅色、圖案為垂直相交陰影線的畫刷: CBrush BrushNew; BrushNew.CreateHatchBrush(HS_CROSS, RGB(255, 0, 0);411建立一個基于對話框的應用程序UseBrush,為對話框類CUseBrushDlg添加一個CBrush類型的成員變量m_Brus

溫馨提示

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

評論

0/150

提交評論