CBrush

CBrush是封裝了Windows圖形設備接口(GDI)中畫刷的MFC類,用於構造CBrush對象,然後傳給需要畫刷的CDC成員函式。具體畫刷可以由實線、陰影線或指定模式的點陣圖線構成。可參閱 CBitmap, CDC相關說明。

基本介紹

  • 中文名:CBrush
  • 用於:構造CBrush對象
  • 構成:實線、陰影線
  • 初始化函式:CreateSolidBrush 
成員函式,構造函式,初始化函式,操作,屬性,函式詳解,

成員函式

構造函式

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對象,在使用該對象之前需要另外初始化。如果使用了不帶參數的那個構造函式,則必須用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程式設計師參考”中的“圖形對象”部分。

相關詞條

熱門詞條

聯絡我們