MFC畫刷類CBrush使用例項

2021-09-06 05:21:35 字數 2178 閱讀 5679

畫刷類cbrush

利用畫筆可以畫圖形的邊框,而用畫刷就可以在圖形內著色。大多數的gdi繪圖函式既使用畫筆又使用畫刷,它們用畫筆繪製各種圖形的周邊,而用畫刷填充圖形,因而可以用一種顏色和風格去設定畫筆,而用另一種顏色和風格去設定畫刷,通過一次函式呼叫就可以繪製出形狀複雜的圖形。

畫刷是由cbrush類管理的,建立畫刷有兩種方法:一種是呼叫建構函式,另一種是呼叫相關的成員函式。

1.cbrush的建構函式

cbrush類的結構函式定義如下:

① cbrush( );

② cbrush( colorref crcolor );

throw( cresourceexception );

③ cbrush( int nindex, colorref crcolor );

throw( cresourceexception );

④ cbrush( cbitmap* pbitmap );

throw( cresourceexception );

引數說明:

crcolor:設定畫筆顏色。

nindex:如果畫刷是帶花紋的,則該引數設定畫刷的花紋型別,其取值如下:

l hs_bdiagonal:為左高右低的45度斜花紋。

l hs_cross:為由水平線和垂直線構成的方格花紋。

l hs_diagcross:為斜45度方格花紋。

l hs_fidagonal:為右高左低的45度斜花紋。

l hs_horizontal:為水平線花紋。

l hs_vertical:為垂直線花紋。

pbitmap:為cbitmap類的指標,用於指定填充時所使用的點陣圖。

2.cbrush提供的建立畫筆的成員函式

除了建構函式,cbrush還提供了6個建立畫刷的成員函式:

bool createsolidbrush( colorref crcolor )

該函式建立乙個實填充的畫刷。crcolor為填充色。

bool createhatchbrush( int nindex, colorref crcolor )

該函式建立乙個帶花紋的畫刷,nindex為花紋型別,crcolor為畫刷顏色。

bool createbrushindirect( const logbrush* lplogbrush )

呼叫該函式可以通過logbrush結構生成乙個畫刷,logbrush結構的定義如下:

typedef struct tag logbrush logbrush;

其中lbstyle指定的是畫刷的型別,lbcolor指定畫刷的顏色,lbhatch指定的是畫刷的花紋型別。

bool createpatternbrush( cbitmap* pbitmap )

建立乙個使用位圖填充的畫刷,畫刷的點陣圖由pbitmap指定,位圖大小必須8×8。

bool createdibpatternbrush( hglobal hpackeddib, uint nusage )

bool createdibpatternbrush( const void* lppackeddib, uint nusage )

建立使用dib(裝置無關位圖)的畫刷,其中hpackeddib指向儲存位圖資料的記憶體塊的位址,lppackeddib指向dib點陣圖資料的指標,nusage用於設定調色盤的屬性。

bool createsyscolorbrush( int nindex )

該函式設定帶有系統色的畫刷,nindex指定為畫刷的花紋型別。

3.cbrush演示例項

(1)建立乙個基於對話方塊的應用程式brushdemo。

(2)向cbrushdemodlg類中新增乙個成員函式runbrush(),它主要完成在指定區域繪製指定矩形的功能。新增runbrush()成員函式的**如下:

void cbrushdemodlg::runbrush(cpaintdc* dc,crect rect, colorref col,cstring text, long lbhatch)

(3)找到cbrushdemodlg::ondrow()函式,修改這個函式的內容:

void cbrushdemodlg::onpaint()

; //筆刷的花紋型別

cstring text[max]=; //提示文字

for(int i=0;i

}(4)執行效果如圖1所示。

圖1 cbrush演示例項

mfc使用不同型別的畫刷填充矩形

畫刷是在畫刷畫封閉曲線時用來填充的顏色,mfc的cbrush類封裝了windowsgdi畫刷,通過它,對cdc類所繪製的封閉圖形的填充,可以填充顏色和紋理。首先給出本次的demo 下面給出核心 在ondraw函式中實現繪圖操作 除此之外,mfc中還可以使用位圖畫刷來進行封閉圖形的填充,方法如上。cb...

如何選擇使用空畫刷

cdc pdc null pdc getdc cpen pen pen.createpen ps solid,2,rgb 255,0,0 cpen oldpen pdc selectobject pen pdc setbkmode transparent 選擇空畫刷 pdc selectstocko...

GDI 基礎程式設計(2) 畫刷的使用

中的注釋還是很清楚的,在此不羅嗦了 void cgdi畫刷dlg gdibrushdrawimage cdc pdc 填充閉合區域 g.fillclosedcurve solidbrush,pt,4,fillmodealternate,1.0 構造比和多邊形 pointf p 5 填充多邊形 sol...