複製鏈接
請複製以下鏈接發送給好友

CBrush

鎖定
CBrush是封裝了Windows圖形設備接口(GDI)中畫刷的MFC類,用於構造CBrush對象,然後傳給需要畫刷的CDC成員函數。具體畫刷可以由實線、陰影線或指定模式的位圖線構成。可參閲 CBitmap, CDC相關説明。
中文名
CBrush
構    成
實線、陰影線
初始化函數
CreateSolidBrush

CBrush成員函數

CBrush構造函數

Cbrush構造一個CBrush對象

CBrush初始化函數

CreateSolidBrush 用指定的顏色初始化畫刷。
CreateHatchBrush 用指定的陰影線初始化畫刷。
CreateBrushIndirect 用結構LOGBRUSH中指定的風格、顏色和模式初始化畫刷。
CreatePatternBrush 用位圖指定的模式初始化畫刷。
CreateDIBPatternBrush 用獨立於設備的位圖(DIB)初始化畫刷。
CreateSysColorBrush 創建一個使用系統缺省顏色的畫刷。

CBrush操作

FromHandle 給出一個WindowsHBRUSH對象句柄時,返回一個指向CBrush對象的指針

CBrush屬性

GetLogBrush 取得一個LOGBRUSH結構
operator HBRUSH 返回CBrush對象上的Windows句柄

CBrush函數詳解

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對象,在使用該對象之前需要另外初始化。如果使用了不帶參數的那個構造函數,則必須用CreateSolidBrushCreateHatchBrushCreateBrushIndirectCreatePatternBrush或CreateDIBPatternBrush來初始化返回的CBrush對象。如果使用了帶參數的構造函數,則不再需要初始化CBrush對象。帶參數的構造函數在出錯時會產生一個異常,而不帶參數的構造函數總是成功返回。只帶有一個參數COLORREF的構造函數用指定的顏色構造一個實線型的畫刷。顏色是一個RGB值,可以用WINDOWS.H中的宏RGB構造出來。帶兩個參數的構造函數構造一個陰影線型的畫刷,參數nIndex指定了陰影線模式的指數(index)。參數crColor指定了畫刷的顏色。帶有一個CBitmap型參數的構造函數構造一個模式化的畫刷。參數指定一個位圖。該位圖應該是已經用CBitmap::CreateBitmap、CBitmap::CreateBitmapIndirect、CBitmap::LoadBitmap或CBitmap::CreateCompatiableBitmap建立或加載的位圖。填充模式下的位圖的最小尺寸為8像素×8像素。
請參閲 CBrush::CreateSolidBrush,
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_COLORS顏色表由一個16位的索引數組組成。
  • DIB_RGB_COLORS顏色表中包含字母式的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,
GdiObject::DeleteObject,
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::LoadBitmapCbitmap:: 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,
CGdiObject::DeleteObject
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,
CGdiObject::DeleteObject
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程序員參考”中的“圖形對象”部分。