CBrush
CBrush
CBrush是封裝了Windows圖形設備介面(GDI)中畫刷的MFC類,用於構造CBrush對象,然後傳給需要畫刷的CDC成員函數。具體畫刷可以由實線、陰影線或指定模式的點陣圖線構成。可參閱 CBitmap, CDC相關說明。
Cbrush構造一個CBrush對象
CreateSolidBrush 用指定的顏色初始化畫刷。
CreateHatchBrush 用指定的陰影線初始化畫刷。
CreateBrushIndirect 用結構LOGBRUSH中指定的風格、顏色和模式初始化畫刷。
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::CreateSolidBrush,
CBrush::CreateHatchBrush,
CBrush::CreateBrushIndirect,
CBrush::CreatPatternBrush,
CBrush::CreateDIBPatternBrush,
CGdiObject::CreateStockObject
CBrush::CreateBrushIndirect
BOOL CreateBrushIndirect( const LOGBRUSH* lpLogBrush ):
返回值
調用成功時返回非零值,否則為0。
參數
lpLogBrush指向LOGBRUSH結構的指針,結構中記錄了畫刷的相關信息。
說明
本函數用結構LOGBRUSH中指定的風格、顏色和模式初始化畫刷。以後,該畫刷可以被選為任何設備上下文的當前畫刷。採用黑白點陣圖(1位面、每像素1位)創建的畫刷使用當前的文本顏色和背景色。位值置為0的像素點將用當前的文本顏色繪製。位值置為1的像素點將用當前的背景色繪製。
請參閱
CBrush::CreateDIBPatternBrush,
CBrush::CreatePatternBrush,
CBrush::CreateSolidBrush,
CBrush::CreateHatchBrush,
CGdiObject::DeleteObject,
::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的應用)
::GlobalAlloc
請參閱
CBrush::CreatePatternBrush,
CBrush::CreateBrushIndirect,
CBrush::CreateSolidBrush,
CBrush::CreateHatchBrush,
CGdiObject::CreateStockObject,
CDC::SelectObject,
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::CreateBrushIndirect,
CBrush::CreateDIBPatternBrush,
CBrush::CreatePatternBrush,
CBrush::CreateSolidBrush,
CGdiObject::CreateStockObject,
::CreateHatchBrush
CBrush::CreatePatternBrush
BOOL CreatePatternBrush( CBitmap* pBitmap );
返回值
調用成功時返回非零值,否則為0。
參數
pBitmap指定一個點陣圖。說明本函數用點陣圖指定的模式初始化畫刷。此畫刷隨後就可用於任何支持光柵操作的設備上下文。由bBitmap指定的點陣圖一般用以下的函數初始化:CBitmap:: CreateBitmap、CBitmap::CreateBitmapIndirect、CBitmap::LoadBitmap或Cbitmap:: CreateCompatibleBitmap。
請參閱 CBitmap,
CBrush::CreateBrushIndirect,
CBrush::CreateDIBPatternBrush,
CBrush::CreateHatchBrush,
CBrush::CreateSolidBrush,
CGdiObject::CreateStockObject
CBrush::CreateSolidBrush
BOOL CreateSolidBrush( COLORREF crColor );
返回值
調用成功時返回非零值,否則為0。
參數
crColor指定畫刷顏色的一個COLORREF結構。該顏色指定了一個RGB顏色值,可以用頭文件WINDOWS.H中的宏RGB生成。
說明
本函數用指定的顏色初始化畫刷。隨後該畫刷就可用於任何設備上下文的當前畫刷。當應用使用完CreateSolidBrush創建的畫刷之後,應該從設備上下文中移出該畫刷。
請參閱
CBrush::CreateBrushIndirect,
CBrush::CreateDIBPatternBrush,
CBrush::CreateHatchBrush,
CBrush::CreatePatternBrush,
::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::CreateBrushIndirect,
CBrush::CreateDIBPatternBrush,
CBrush::CreateHatchBrush,
CBrush::CreatePatternBrush,
CBrush::CreateSolidBrush,
::GetSysColorBrush,
::CreateSolidBrush,
CGdiObject::DeleteObject
CBrush::FromHandle
返回值
調用成功時返回一個指向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程序員參考”中的“圖形對象”部分。