CBrush画刷定义了一种位图形式的像素,利用它可对区域内部填充颜色
该类封装了Windows的图形设备接口(GDI)刷子。通过该类构造的CBrush对象可以传递给任何一个需要画刷的CDC成员函数。该画刷可以是实线、阴影线和某种图案
1构造CBrush对象
该类具有4个重载的构造函数,下面分别加以介绍
CBrush;
CBrush(COLORREF crColor);
CBrush(int nIndex,COLORREF crColor);
CBrush(CBitmap* pBitmap);
第一个构造函数构造了一支未被初始化的画刷,如果用户使用了该构造函数,则必须对所得到的CBrush对象进行初始化。
其他重的构造函数分别使用指定的颜色、限影线模式和颜色或位图指针来构造一支以被初始化的画刷。如果在调用过程中遇到错误,则会产生一个异常
下面是对这些构造函数所用到的参数的详细说明:
参数crColor:以RGB颜色指定画刷的前景色。如果是表示阴影线的画刷,则该参数指定的是阴影线的颜色。
参数nIndex:指定了画刷的阴影线的风格
画刷的阴影线的样式
阴影线参数值 | 注释 |
HS_BDIAGONAL | 从左到右向下成45度的对角线 |
HS_CROSS | 水平线和垂直线相关的十字交叉线 |
HS_DIAGCROSS | 夹角为45度的斜十字交叉线 |
HS_FDIAGONAL | 从左到右向上成45度的对角线 |
HS_HORIZONTAL | 水平阴影线 |
HS_VERTICAL | 垂直阴影线 |
参数pBitmap:指向一个CBitmap对象,该对象指定了一幅画刷用来绘图的位图。
2初始化CBrush对象
除了使用构造函数创建初始化过的画刷对象,还有以下几种初始化方法:
调用CBrush::CreateSolidBrush()成员函数来初始化实画刷,以便使用纯色来填充区域内部,该函数原型声明如下:
BOOL CreateSolidBrush(COLORREF crColor)
参数crColor指定了由结构COLORREF定义的画刷颜色,该颜色值是由定义在WINDOWS.H文件中的RGB宏指定的。
调用CBrush::CreateHatchBrush()成员函数来初始化阴影画刷,其原型声明如下:
BOOL CreateHatchBrush(int nIndex,COLORREF crColor);
参数与构造函数中的参数完全相同。
调用CBrush::CreatePatternBrush()成员函数初始化一个图形画刷,当使用该画刷填充图形时,图形内部将用位图一个接一个的填充。该函数原型声明如下:
BOOL CreatePatternBrush(CBitmap* pBitmap);
参数如前所述。
使用图形画刷需要注意的是在删除图形画刷时,与画刷相联系的位图并未被删除。位图必须被单独地删除。
调用CBrush::CreateBrushIndirect()成员函数来创建画刷对象,但画刷的属性并不是直接通过函数参数形式给出的,而是通过LOGBRUSH结构的成员变量间接的给出的。该函数原型声明如下:
BOOL CreateBrushIndirect(const LOGBURSH* lpLogBrush);
其中的lpLogBrushIndirect(const LOGBURSH* lpLogBrush);
其中的lpLogBrush参数是指向LOGBRUSH结构的指针。LOGBRUSH结构中包含有关画刷的信息。
函数如果调用成功,则返回非零值,否则返回零。
另外我们还可以使用CBrush::CreateDIBPatternBrush()成员函数来创建一个由设备无关位图(DIB)指定的图形画刷,该画刷可以被选进任何一种设备环境以便支持光栅操作。
应用CBrush对象进行绘图
方法一:使用成员函数CreateBrushIndirect来创建一个蓝色,风格为BS_HATCHED画刷对象来绘制一个具有十字交叉阴影线的矩形区域。
![](https://img-my.csdn.net/uploads/201205/11/1336702294_8418.png)
![](https://img-my.csdn.net/uploads/201205/11/1336702303_2541.png)
方法二:使用第二种构函数来创建一支绿色系统缺省的画刷并绘制一个不带任何阴影线的矩形区域
方法三:使用第三种构函数来创建一支红色,样式为HS_BDIAGONAL的画刷并绘制一个具有阴影线的矩形区域。