CBrush类
来源:互联网 发布:pc蛋蛋手机源码 编辑:程序博客网 时间:2024/05/16 16:09
CBrush画刷定义了一种位图形式的像素,利用它可对区域内部填充颜色
该类封装了Windows的图形设备接口(GDI)刷子。通过该类构造的CBrush对象可以传递给任何一个需要画刷的CDC成员函数。该画刷可以是实线、阴影线和某种图案
1构造CBrush对象
该类具有4个重载的构造函数,下面分别加以介绍
CBrush;
CBrush(COLORREF crColor);
CBrush(int nIndex,COLORREF crColor);
CBrush(CBitmap* pBitmap);
第一个构造函数构造了一支未被初始化的画刷,如果用户使用了该构造函数,则必须对所得到的CBrush对象进行初始化。
其他重的构造函数分别使用指定的颜色、限影线模式和颜色或位图指针来构造一支以被初始化的画刷。如果在调用过程中遇到错误,则会产生一个异常
下面是对这些构造函数所用到的参数的详细说明:
参数crColor:以RGB颜色指定画刷的前景色。如果是表示阴影线的画刷,则该参数指定的是阴影线的颜色。
参数nIndex:指定了画刷的阴影线的风格
参数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画刷对象来绘制一个具有十字交叉阴影线的矩形区域。
void CMyBrushView::OnPaint() {CPaintDC dc(this); // 用于绘制的设备上下文// TODO: 在此处添加消息处理程序代码// 不要为绘制消息而调用 CWnd::OnPaint()CDC* pDC=GetDC();//样式为HS_CROSS的画刷;LOGBRUSH lb;//该结构前面已经介绍过了lb.lbStyle=BS_HATCHED;lb.lbColor=(COLORREF)0x00FF0000;lb.lbHatch=HS_CROSS;CBrush NewBrush1;NewBrush1.CreateBrushIndirect(&lb);CBrush* pOldBrush1=pDC->SelectObject(&NewBrush1);pDC->Rectangle(50,50,200,300);pDC->SelectObject(pOldBrush1);}
方法二:使用第二种构函数来创建一支绿色系统缺省的画刷并绘制一个不带任何阴影线的矩形区域
void CMyBrushView::OnPaint() {CPaintDC dc(this); // 用于绘制的设备上下文// TODO: 在此处添加消息处理程序代码// 不要为绘制消息而调用 CWnd::OnPaint()CDC* pDC=GetDC();CBrush NewBrush2((COLORREF)0x0000FF00);CBrush* pOldBrush2=pDC->SelectObject(&NewBrush2);pDC->Rectangle(250,50,400,300);pDC->SelectObject(pOldBrush2);}
方法三:使用第三种构函数来创建一支红色,样式为HS_BDIAGONAL的画刷并绘制一个具有阴影线的矩形区域。
void CMyBrushView::OnPaint() {CPaintDC dc(this); // 用于绘制的设备上下文// TODO: 在此处添加消息处理程序代码// 不要为绘制消息而调用 CWnd::OnPaint()CDC* pDC=GetDC();CBrush NewBrush3(HS_BDIAGONAL,(COLORREF)0x000000FF);CBrush* pOldBrush3=pDC->SelectObject(&NewBrush3);pDC->Rectangle(450,50,600,300);pDC->SelectObject(pOldBrush3);}
- CBrush类
- CBrush类的详解
- CBrush
- CBrush
- CBrush
- CBrush
- CBrush
- GDI画刷和CBrush类
- GDI绘图类示例代码-CFont CPen CBrush
- GDI绘图类示例代码-CFont CPen CBrush
- [MFC]CPen画笔类、CBrush画刷类使用介绍
- CPen,CBrush,
- 图形设备接口类,GDI类:CPen, CBrush,CFont,CBitmap,CRgn,CPalette等
- [MFC]CPen画笔类、CBrush画刷类、背景颜色和背景模式
- CBrush实现画矩形
- MFC画刷类CBrush
- MFC创建透明CBrush
- MFC学习笔记.day02续-CDC类,绘图区域,CPen画笔,画刷 CBrush,DC设备描述表
- 登山机器人问题(本题满分40分)(福建04年省选题目)noip提高组难度
- java_载入图片的几种常用方法
- Android中asset文件夹和raw文件夹区别
- 安装office2007失败解决方法
- 隐形的翅膀 接近noip提高组难度
- CBrush类
- 火烧赤壁(vijos某次模拟赛题目noip2004校门口外的树加强版)略高于noip普及组难度
- 添边问题 解题报告
- 德州仪器的bug也碰到了
- 敏捷开发中的测试
- 总线揭密:串行传输VS并行传输
- HeadFirst设计模式学习笔记4-适配器模式&外观模式
- CPU性能判断标准:CPU性能=IPC×频率
- 有向图成环问题