All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
小记存储过程中经常用到的本周,本月,本年函数_[SQL,Server教程]
下载:Visual,Studio,2008,Beta,2_[Asp.Net教程]
windows下Apache2+php4+MySql5集成简明教程_php资料_编程技术
AJAX并不神秘:揭密各种AJAX控件和类库_[AJAX教程]
系统恢复后,通过sqlserver服务管理器启动出现“指定的服务未安装”的解决方法_[SQL,Server教程]
ASPX页面出现乱码的解决办法_[Asp.Net教程]
C#中Windows通用的回车转Tab方法_[Asp.Net教程]
ASPX文件转HTML_[Asp.Net教程]
一个使用C#自写的SPLIT函数的代码_.net资料_编程技术
将ASP.NET所需的程序集dll放在别的目录下_[Asp.Net教程]
Reading number is top 10 pictures
Perfect small Laurie1
Discharge accidentally Actresses by the breast3
Small s breast enhancement demonstration
Lewd,it is too lewd.
29 the belle stars after bath figure4
LiXiang early youth photo
人造器官和铁肺人
真正的国产-非模拍 贵在是真实1
Perfect small Laurie2
中国文革时期的色情图片1
Download software ranking
小黑猫大战两米大花蛇
Unix video tutorial6
SP4 for SQL2000
VC++6.0培训教程
Boxer vs Yellow2
天龙八部最新服务端
Unix video tutorial1
C#与.NET技术平台实战演练
Prostitutes diary
jBuilder2006
qq published in(发表于) 2014/7/9 22:40:11 Edit(编辑)
visual c++中的画刷类CBrush使用实例

visual c++中的画刷类CBrush使用实例

visual c++中的画刷类CBrush使用实例

画刷类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 {

UINT lbStyle;

COLORREF lbColor;

LONG lbHatch;

} 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)

{

CBrush cbrush;

CBrush* pBrush; //旧笔刷

cbrush.CreateHatchBrush(lbHatch,col); //建立带花纹笔刷

dc->DrawText(text,&rect,DT_CENTER|DT_WORDBREAK); //写提示文本

rect.top=rect.top+40; //调整矩形区域

pBrush=dc->SelectObject(&cbrush); //载入笔刷

dc->Rectangle(&rect); //绘制矩形

dc->SelectObject(pBrush); //恢复笔刷

cbrush.DeleteObject();

pBrush->DeleteObject();

}

(3)找到CBrushDemoDlg::OnDrow()函数,修改这个函数的内容:

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成员函数利用笔刷填充指定区域

brush.DeleteObject();

//画矩形区域

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}; //笔刷的花纹类型



添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.