当前位置: 首页 > article >正文

CBrush

文章来源:http://blog.csdn.net/wuyuan2011woaini/article/details/7556207


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画刷对象来绘制一个具有十字交叉阴影线的矩形区域。 


 方法二:使用第二种构函数来创建一支绿色系统缺省的画刷并绘制一个不带任何阴影线的矩形区域


方法三:使用第三种构函数来创建一支红色,样式为HS_BDIAGONAL的画刷并绘制一个具有阴影线的矩形区域。


http://www.lryc.cn/news/2415951.html

相关文章:

  • JavaScript入门:掌握基础语法
  • Free Pascal不完全攻略之一 :进入FP的世界
  • 编程示例:计算1000的阶乘
  • lsass.exe病毒木马手工清除方法
  • CSDN论坛--提问的智慧
  • 微软笔试题《Arithmetic Puzzles》- 题解
  • WPF特效-鱼游动动画3
  • 5分钟了解《代码整洁之道》精华
  • React 核心开发者 Dan Abramov 访谈实录
  • Markdown数学公式语法
  • 入门--什么是机器码、注册机和注册码
  • java 调c catch 异常_简单谈谈java的异常处理(Try Catch Finally)
  • 一文告诉你啥是nginx,nginx基础知识详解
  • 导航栏透明化方案
  • 晨枫U盘维护工具V2.0 安装教程
  • 挑战318川藏线
  • 外挂原理之植物大战僵尸
  • 深度xp精简版6.2_珍藏多年的精品,老机专用:深度技术WinXP SP2 V5系列
  • Struts2 基础入门
  • 亚马逊分类目录_新版亚马逊分类目录v2.4程序源码官方分享下载
  • 浅显易懂理解端口映射技术
  • 最新RemObjects,您值得拥有
  • 《Windows 核心编程》27章:硬件输入模型和局部输入状态
  • VC 调试技术与异常(错误)处理
  • Asp.net Core WebHost寄宿在Host上
  • 人小鬼大 微软优化工具TweakUI使用感受
  • discuz防灌水机制
  • 职工信息工资管理系统(设计文档+源代码+SQL文件)
  • DjangoBook完整发布了
  • 冷却水的循环方式有哪几种_工业循环冷却水处理知识---系列1