免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
visual c++中的畫刷類CBrush使用實例

畫刷類CBrush
利用畫筆可以畫圖形的邊框,而用畫刷就可以在圖形內(nèi)著色。大多數(shù)的GDI繪圖函數(shù)既使用畫筆又使用畫刷,它們用畫筆繪制各種圖形的周邊,而用畫刷填充圖形,因而可以用一種顏色和風格去設置畫筆,而用另一種顏色和風格去設定畫刷,通過一次函數(shù)調用就可以繪制出形狀復雜的圖形。
畫刷是由CBrush類管理的,創(chuàng)建畫刷有兩種方法:一種是調用構造函數(shù),另一種是調用相關的成員函數(shù)。
1
CBrush的構造函數(shù)
CBrush
類的結構函數(shù)定義如下:
CBrush( );
CBrush( COLORREF crColor );
throw( CResourceException );
CBrush( int nIndex, COLORREF crColor );
throw( CResourceException );
CBrush( CBitmap* pBitmap );
t
hrow( CResourceException );
參數(shù)說明:
crColor
:設定畫筆顏色。
NIndex
:如果畫刷是帶花紋的,則該參數(shù)設定畫刷的花紋類型,其取值如下:
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提供的創(chuàng)建畫筆的成員函數(shù)
除了構造函數(shù),CBrush還提供了6個創(chuàng)建畫刷的成員函數(shù):
BOOL CreateSolidBrush( COLORREF crColor )
該函數(shù)創(chuàng)建一個實填充的畫刷。crColor為填充色。
BOOL CreateHatchBrush( int nIndex, COLORREF crColor )
該函數(shù)創(chuàng)建一個帶花紋的畫刷,nIndex為花紋類型,crColor為畫刷顏色。
BOOL CreateBrushIndirect( const LOGBRUSH* lpLogBrush )
調用該函數(shù)可以通過LOGBRUSH結構生成一個畫刷,LOGBRUSH結構的定義如下:
typedef struct tag LOGBRUSH {
UINT    lbStyle;
COLORREF      lbColor;
LONG   lbHatch;
} LOGBRUSH;
其中lbStyle指定的是畫刷的類型,lbColor指定畫刷的顏色,lbHatch指定的是畫刷的花紋類型。
BOOL CreatePatternBrush( CBitmap* pBitmap )
創(chuàng)建一個使用位圖填充的畫刷,畫刷的位圖由pBitmap指定,位圖大小必須8×8。
BOOL CreateDIBPatternBrush( HGLOBAL hPackedDIB, UINT nUsage )
BOOL CreateDIBPatternBrush( const void* lpPackedDIB, UINT nUsage )
創(chuàng)建使用DIB(設備無關位圖)的畫刷,其中hPackedDIB指向存儲位圖數(shù)據(jù)的內(nèi)存塊的地址,lpPackedDIB指向DIB位圖數(shù)據(jù)的指針,nUsage用于設定調色板的屬性。
BOOL CreateSysColorBrush( int nIndex )
該函數(shù)設定帶有系統(tǒng)色的畫刷,nIndex指定為畫刷的花紋類型。
3
CBrush演示實例
1)創(chuàng)建一個基于對話框的應用程序BrushDemo
2)向CBrushDemoDlg類中添加一個成員函數(shù)RunBrush(),它主要完成在指定區(qū)域繪制指定矩形的功能。添加RunBrush()成員函數(shù)的代碼如下:
void CBrushDemoDlg::RunBrush(CPaintDC* dc,CRect rect, COLORREF col,CString text, LONG lbHatch)
{
CBrush cbrush;
CBrush* pBrush; //
舊筆刷
cbrush.CreateHatchBrush(lbHatch,col);    //
建立帶花紋筆刷
dc->DrawText(text,&rect,DT_CENTER|DT_WORDBREAK);    //
寫提示文本
rect.top=rect.top+40;       //
調整矩形區(qū)域
pBrush=dc->SelectObject(&cbrush);     //
載入筆刷
dc->Rectangle(&rect);    //
繪制矩形
dc->SelectObject(pBrush);    //
恢復筆刷
cbrush.DeleteObject();
pBrush->DeleteObject();
}
3)找到CBrushDemoDlg::OnDrow()函數(shù),修改這個函數(shù)的內(nèi)容:
void CBrushDemoDlg::OnPaint()
{
CPaintDC dc(this);
//
背景填充為白色
CRect rect,fillrect;
CBrush brush;
brush.CreateSolidBrush(RGB(255,255,255));
this->GetClientRect(&rect);
dc.FillRect(&rect,&brush);    //
FillRect成員函數(shù)利用筆刷填充指定區(qū)域
brush.DeleteObject();
//
畫矩形區(qū)域
int left=10;
const int MAX=6;
fillrect.top=rect.top+10;
fillrect.bottom=rect.bottom-10;
long style[MAX]={HS_BDIAGONAL,HS_CROSS,HS_DIAGCROSS,\
HS_FDIAGONAL,HS_HORIZONTAL,HS_VERTICAL};            //
筆刷的花紋類型

CString text[MAX]={" \n從左到右","網(wǎng) ",\
"
斜網(wǎng)格線"," \n從右到左"," "," 直線"};        //提示文本
for(int i=0;i<MAX;i++)
{
fillrect.left=left;
fillrect.right=fillrect.left+100;
left=fillrect.right+10;
//
利用"RGB((i+1)*255/MAX,0,(MAX-i)*255/MAX)"產(chǎn)生不同的顏色
RunBrush(&dc,fillrect,RGB((i+1)*255/MAX,0,(MAX-i)*255/MAX),text[i],style[i]);
}
}

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VC畫圖-2
MFC繪圖總結(4):畫圖 | 求索閣
VC++更改對話框背景色和字體顏色
GDI(圖形設備接口)
mfc中字體設置詳解
MFC學習之 自繪入門
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服