CBrush是封装了Windows
图形设备接口(GDI)中画刷的MFC类,用于构造CBrush对象,然后传给需要画刷的
CDC成员函数。具体画刷可以由实线、阴影线或指定模式的
位图线构成。可参阅 CBitmap, CDC相关说明。
成员函数
构造函数
Cbrush构造一个CBrush对象
初始化函数
CreateSolidBrush 用指定的颜色初始化画刷。
CreateHatchBrush 用指定的阴影线初始化画刷。
CreatePatternBrush 用位图指定的模式初始化画刷。
CreateDIBPatternBrush 用独立于设备的位图(DIB)初始化画刷。
CreateSysColorBrush 创建一个使用系统缺省颜色的画刷。
操作
FromHandle 给出一个WindowsHBRUSH对象句柄时,返回一个指向CBrush对象的
指针。
属性
GetLogBrush 取得一个
LOGBRUSH结构
operator HBRUSH 返回CBrush对象上的Windows句柄
函数详解
CBrush:: CBrush
CBrush( );
CBrush( COLORREF crColor );
throw( CResouceException );
CBrush( int nIndex, COLORREF crColor );
throw( CResouceException );
CBrush( CBitmap* pBitmap );
throw( CResouceExecption );
参数
crColor指定画刷的
前景色(
RGB方式)。如果画刷是阴影线型的,则指定阴影线的颜色。
nIndex指定画刷阴影线采用的风格,取值如下:
HS_BDIAGONAL45度的向下影线(从左到右)
HS_CROSS水平和垂直方向以
网格线作出阴影
HS_DIAGCROSS 45度的网格线阴影
HS_FDIAGONAL 45度的向上阴影线(从左到右)
HS_HORIZONTAL 水平的阴影线
HS_VERTICAL 垂直的阴影线
pBitmap指向
CBitmap对象的指针,该对象指定了画刷要绘制的
位图。
说明
类CBrush一共有四个覆盖的
构造函数。不带参数的那个构造函数构造一个未
初始化的CBrush对象,在使用该对象之前需要另外初始化。如果使用了不带参数的那个构造函数,则必须用
CreateSolidBrush、
CreateHatchBrush、
CreateBrushIndirect、
CreatePatternBrush或CreateDIBPatternBrush来初始化返回的CBrush对象。如果使用了带参数的构造函数,则不再需要初始化CBrush对象。带参数的构造函数在出错时会产生一个异常,而不带参数的构造函数总是成功返回。只带有一个参数
COLORREF的构造函数用指定的颜色构造一个实线型的画刷。颜色是一个
RGB值,可以用WINDOWS.H中的宏RGB构造出来。带两个参数的构造函数构造一个阴影线型的画刷,参数nIndex指定了阴影线模式的指数(index)。参数crColor指定了画刷的颜色。带有一个
CBitmap型参数的构造函数构造一个模式化的画刷。参数指定一个位图。该
位图应该是已经用CBitmap::
CreateBitmap、CBitmap::
CreateBitmapIndirect、CBitmap::
LoadBitmap或CBitmap::CreateCompatiableBitmap建立或加载的位图。填充模式下的位图的最小尺寸为8像素×8像素。
CBrush::CreatPatternBrush,
CGdiObject::CreateStockObject
CBrush::CreateBrushIndirect
BOOL CreateBrushIndirect( const LOGBRUSH* lpLogBrush ):
返回值
调用成功时返回非零值,否则为0。
参数
lpLogBrush指向
LOGBRUSH结构的指针,结构中记录了画刷的相关信息。
说明
本函数用结构LOGBRUSH中指定的风格、颜色和模式初始化画刷。以后,该画刷可以被选为任何
设备上下文的当前画刷。采用黑白
位图(1位面、每像素1位)创建的画刷使用当前的文本颜色和背景色。位值置为0的像素点将用当前的文本颜色绘制。位值置为1的像素点将用当前的背景色绘制。
请参阅
CBrush::CreateDIBPatternBrush,
::CreateBrushIndirect
CGdiObject::CreateStockObject,
CBrush::CreateDIBPatternBrush
BOOL CreateDIBPatternBrush( HGLOBAL hPackedDIB, UINT nUsage );
BOOL CreateDIBPatternBrush( const void* lpPackedDIB, UINT nUsage );
返回值
调用成功时返回非零值,否则为0。
参数
hPackedDIB指定一个全局内存对象,其中包含了一个压缩的独立于设备的位图(DIB)
nUsage指明BITMAPINFO数据结构(压缩的DIB中的一部分)的bmiColors[ ]成员是否包含明确的RGB值或指向当前逻辑调色板的索引值。参数必须取以下值之一:
下面这个值只在第二个函数中有效:
DIB_PAL_INDICES未提供颜色表。位图中包含了指向画刷选中的
设备上下文的逻辑调色板的索引。
lpPackedDIB指向一个包括了BITMAPINFO结构的压缩的DIB。BITMAPINFO结构后紧跟着的是定义位图像素的
字节数组。
说明
本函数用DIB指定的模式初始化画刷。画刷随后就可以被任何支持光栅操作的设备上下文选中。
CreateDIBPatternBrush函数的两个版本在处理DIB时有些不同:
在前一个函数中,取得DIB的句柄需要调用Windows函数::
GlobalAlloc来分配内存,然后用DIB填充这块内存。
在后一个函数中,不再需要调用函数::GlobalAlloc为压缩的DIB分配内存。
一个压缩的DIB由一个BITMAPINFO结构和紧跟着的一个
字节数组(该数组定义了位图的像素)构成。用作填充模式的位图应该是8像素×8像素的。如果
位图太大,Windows将用该位图的左上角的8行8列的像素来创建填充模式。当应用选择一个两种颜色的DIB模式到一个黑白的
设备上下文中时,Windows将忽略DIB中指定的颜色,而用该设备上下文中当前文本的颜色和背景色显示模式画刷。DIB中对应于第一种颜色的像素(在DIB颜色表偏移为0处)将采用文本的颜色显示。DIB中对应于第二种颜色的像素(在DIB颜色表偏移为1处)将采用背景色显示。要了解有关使用以下的Windows函数的更详细的信息,请参阅联机文档“Win32 SDK程序员参考”。
::CreateDIBPatternBrush(本函数是为了兼容Windows3.0之前的应用而提供的,对于 Win32应用,请用函数::
CreateDIBPatternBrushPt)
::CreateDIBPatternBrushPt(本函数只用于基于
Win32的应用)
请参阅
CGdiObject::CreateStockObject,
CDC::GetBrushOrg,
CDC::SetBrushOrg
CBrush::CreateHatchBrush
BOOL CreateHatchBrush( int nIndex, COLORREF crColor );
返回值
调用成功时返回非零值,否则为0。
参数
nIndex指定画刷的阴影线风格。可取的值如下:
HS_BDIAGONAL 45度的向下影线(从左到右)
HS_CROSS 水平和垂直方向以网格线作出阴影
HS_DIAGCROSS45度的网格线阴影
HS_FDIAGONAL45度的向上阴影线(从左到右)
HS_HORIZONTAL 水平的阴影线l HS_VERTICAL 垂直的阴影线
crColor指定画刷的前景色(
RGB形式的值),就是阴影的颜色。要了解更详细的信息,请参阅联机文档“Win32 SDK”中关于
COLORREF的描述.
说明
本函数用指定的阴影模式和颜色初始化画刷。随后该画刷就可以被选为任何
设备上下文的当前画刷了。
请参阅
CBrush::CreateDIBPatternBrush,
CGdiObject::CreateStockObject,
::CreateHatchBrush
CBrush::CreatePatternBrush
BOOL CreatePatternBrush( CBitmap* pBitmap );
返回值
调用成功时返回非零值,否则为0。
参数
pBitmap指定一个
位图。说明本函数用位图指定的模式初始化画刷。此画刷随后就可用于任何支持光栅操作的
设备上下文。由bBitmap指定的位图一般用以下的函数初始化:
CBitmap:: CreateBitmap、CBitmap::
CreateBitmapIndirect、CBitmap::
LoadBitmap或
Cbitmap:: CreateCompatibleBitmap。
用作填充模式的位图应该是8像素×8像素的。如果位图太大,Windows将用该位图的左上角的8行8列的像素来创建填充模式。删除模式画刷时不会影响相关的位图。这意味着可以用一个
位图来创建任意个模式画刷。采用黑白位图(1位面、每像素1位)创建的画刷使用当前的文本颜色和
背景色。位值置为0的像素点将用当前的文本颜色绘制,位值置为1的像素点将用当前的背景色绘制。要了解有关使用Windows函数::
CreatePatternBrush的更详细信息,请参阅联机文档“Win32 SDK 程序员参考”。
请参阅 CBitmap,
CBrush::CreateDIBPatternBrush,
CGdiObject::CreateStockObject
CBrush::CreateSolidBrush
BOOL CreateSolidBrush( COLORREF crColor );
返回值
调用成功时返回非零值,否则为0。
参数
crColor指定画刷颜色的一个
COLORREF结构。该颜色指定了一个
RGB颜色值,可以用头文件WINDOWS.H中的宏RGB生成。
说明
本函数用指定的颜色初始化画刷。随后该画刷就可用于任何
设备上下文的当前画刷。当应用使用完
CreateSolidBrush创建的画刷之后,应该从设备上下文中移出该画刷。
请参阅
CBrush::CreateDIBPatternBrush,
::CreateSolidBrush,
CBrush::CreateSysColorBrush
BOOL CreateSysColorBrush( int nIndex );
返回值
调用成功时返回非零值,否则为0。
参数
nIndex指定阴影线画刷的风格。可能的取值如下:
HS_BDIAGONAL45度的向下影线(从左到右)
HS_CROSS水平和垂直方向以网格线作出阴影
HS_DIAGCROSS45度的网格线阴影
HS_FDIAGONAL45度的向上阴影线(从左到右)l HS_HORIZONTAL水平的阴影线
HS_VERTICAL垂直的阴影线
说明
本函数初始化画刷的颜色。随后该画刷就可用于任何设备上下文的当前画刷。当应用使用完CreateSysColorBrush创建的画刷之后,应该从设备上下文中移出该画刷。
请参阅
CBrush::CreateDIBPatternBrush,
::CreateSolidBrush,
CBrush::FromHandle
static CBrush* PASCAL FromHandle( HBRUSH hBrush );
返回值
调用成功时返回一个指向CBrush对象的
指针,否则返回NULL。
参数
hBrush指向一个Windows GDI画刷的句柄。
说明
本函数返回一个指向CBrush对象的指针,所需参数为一个指向一个Windows GDI画刷的句柄。如果该CBrush对象没有应用到句柄上,则创建一个临时的CBrush对象并应用它。该临时CBrush对象保持有效,直到应用在它的事件循环中出现空闲时间,此时Windows会删除所有的临时图形对象。换句话说,临时对象仅在一个
Windows消息的处理过程中有效。要了解有关使用图形对象的更详细信息,请参阅联机文档“Win32 SDK程序员参考”中的“图形对象”部分。
CBrush::GetLogBrush
int GetLogBrush( LOGBRUSH* pLogBrush );
返回值
调用成功且参数pLogBrush有效时,返回存到缓冲区中的字节数。调用成功但参数pLogBrush为NULL时,返回为了保存数据到缓冲区所需的字节数。否则,返回0。
参数
pLogBrush指向一个
LOGBRUSH结构的指针,结构中包含了画刷的有关信息。
说明
本函数用于检索LOGBRUSH结构中的信息。该结构定义了画刷的风格、颜色和模式。例如,调用本函数来取得某个
位图的颜色和模式。
示例
LOGBRUSH logbrush;brush
Existing.GetLogBrush( &logbrush );
CBrush brushOther ( logbrush,lbColor );
请参阅 LOGBRUSH, ::GetObject
CBrush::operator HBRUSH
operator HBRUSH( ) const;
调用成功时返回一个指向Windows GDI对象的句柄,该句柄表示一个CBrush对象。否则返回NULL。
说明
本
操作符用于取得某个CBrush对象上的Windows GDI对象句柄。这是一个校验性操作符,可直接参考HBRUSH对象。要了解有关使用图形对象的更详细信息,请参阅联机文档“Win32 SDK程序员参考”中的“图形对象”部分。