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。

用作填充模式的點陣圖應該是8像素×8像素的。如果點陣圖太大,Windows將用該點陣圖的左上角的8行8列的像素來創建填充模式。刪除模式畫刷時不會影響相關的點陣圖。這意味著可以用一個點陣圖來創建任意個模式畫刷。採用黑白點陣圖(1位面、每像素1位)創建的畫刷使用當前的文本顏色和背景色。位值置為0的像素點將用當前的文本顏色繪製,位值置為1的像素點將用當前的背景色繪製。要了解有關使用Windows函式::CreatePatternBrush的更詳細信息,請參閱在線上文檔“Win32 SDK 程式設計師參考”。

請參閱 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

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程式設計師參考”中的“圖形對象”部分。

相關詞條

相關搜尋

熱門詞條

聯絡我們