分享方式:


CGdiObject 類別

為各種 Windows 繪圖裝置介面 (GDI) 物件 (例如點陣圖、區域、筆刷、畫筆、調色盤和字型) 提供基底類別。

語法

class CGdiObject : public CObject

成員

公用建構函式

名稱 描述
CGdiObject::CGdiObject 建構 CGdiObject 物件。

公用方法

名稱 描述
CGdiObject::Attach 將 Windows GDI 物件附加至 CGdiObject 物件。
CGdiObject::CreateStockObject 擷取其中一個 Windows 預先定義的手寫筆、筆刷或字型的句柄。
CGdiObject::D eleteObject 藉由釋放與對象相關聯的所有系統記憶體,從記憶體中刪除附加至 CGdiObject 物件的 Windows GDI 物件。
CGdiObject::D eleteTempMap 刪除 所FromHandle建立的任何暫存CGdiObject物件。
CGdiObject::D etach 將 Windows GDI 對象與 物件中斷 CGdiObject 連結,並將句柄傳回給 Windows GDI 物件。
CGdiObject::FromHandle 傳回物件指標 CGdiObject ,指定 Windows GDI 物件的句柄。
CGdiObject::GetObject 以描述附加至 CGdiObject 物件的 Windows GDI 對象的數據填入緩衝區。
CGdiObject::GetObjectType 擷取 GDI 物件的型別。
CGdiObject::GetSafeHandle m_hObject除非 this 是 NULL,否則會傳回 NULL,在此情況下會傳回 NULL。
CGdiObject::UnrealizeObject 重設筆刷的來源或重設邏輯調色盤。

公用運算子

名稱 描述
CGdiObject::operator != 判斷兩個 GDI 對象在邏輯上是否不相等。
CGdiObject::operator == 判斷兩個 GDI 對象在邏輯上是否相等。
CGdiObject::operator HGDIOBJ 擷取附加 Windows GDI 物件的 HANDLE。

公用資料成員

名稱 描述
CGdiObject::m_hObject 包含附加至此物件的 HBITMAP、HPALETTE、HRGN、HBRUSH、HPEN 或 HFONT 的 HANDLE。

備註

您永遠不會直接建立 CGdiObject 。 相反地,您會從其中一個衍生類別建立 物件,例如 CPenCBrush

如需 的詳細資訊 CGdiObject,請參閱 圖形物件

繼承階層架構

CObject

CGdiObject

需求

標題: afxwin.h

CGdiObject::Attach

將 Windows GDI 物件附加至 CGdiObject 物件。

BOOL Attach(HGDIOBJ hObject);

參數

物件
Windows GDI 物件的 HANDLE(例如 HPEN 或 HBRUSH)。

傳回值

如果附件成功,則為非零;否則為 0。

CGdiObject::CGdiObject

建構 CGdiObject 物件。

CGdiObject();

備註

您永遠不會直接建立 CGdiObject 。 相反地,您會從其中一個衍生類別建立 物件,例如 CPenCbrush

CGdiObject::CreateStockObject

擷取其中一個預先定義的庫存 Windows GDI 畫筆、筆刷或字型的句柄,並將 GDI 物件附加至 CGdiObject 物件。

BOOL CreateStockObject(int nIndex);

參數

nIndex
常數,指定所需的股票對象類型。 如需適當值的描述,請參閱 Windows SDK 中 GetStockObject 的參數 fnObject

傳回值

如果函式成功則為非零,否則為 0。

備註

使用其中一個對應至 Windows GDI 物件類型的衍生類別呼叫此函式,例如 CPen 股票畫筆。

CGdiObject::D eleteObject

釋放與 Windows GDI 物件相關聯的所有系統記憶體,以從記憶體中刪除附加的 Windows GDI 物件。

BOOL DeleteObject();

傳回值

如果已成功刪除 GDI 物件,則為非零;否則為 0。

備註

CGdiObject 對象相關聯的記憶體不會受到這個呼叫的影響。 應用程式不應該在目前選取到裝置內容的物件上CGdiObject呼叫DeleteObject

刪除圖樣筆刷時,不會刪除與筆刷相關聯的點陣圖。 位圖必須獨立刪除。

CGdiObject::D eleteTempMap

CWinApp閑置時間處理程序自動呼叫,DeleteTempMap刪除 所FromHandle建立的任何暫存CGdiObject物件。

static void PASCAL DeleteTempMap();

備註

DeleteTempMap 先中斷連結附加至暫存 CGdiObject 物件的 Windows GDI 物件,再刪除 CGdiObject 物件。

範例

// DeleteTempMap() is a static member and so does not need to
// be called within the scope of an instantiated CGdiObject object.
CGdiObject::DeleteTempMap();

CGdiObject::D etach

將 Windows GDI 對象與 物件中斷 CGdiObject 連結,並將句柄傳回給 Windows GDI 物件。

HGDIOBJ Detach();

傳回值

HANDLE卸離至 Windows GDI 物件的 ,否則如果沒有附加 GDI 物件,則為 NULL。

CGdiObject::FromHandle

傳回物件指標 CGdiObject ,指定 Windows GDI 物件的句柄。

static CGdiObject* PASCAL FromHandle(HGDIOBJ hObject);

參數

物件
Windows GDI 物件的 HANDLE。

傳回值

可能為暫時或永久的指標 CGdiObject

備註

CGdiObject如果物件尚未附加至 Windows GDI 物件,則會建立並附加暫存CGdiObject物件。

此暫存 CGdiObject 物件只有在下次應用程式在其事件迴圈中有閑置時間為止才有效,此時會刪除所有暫存圖形物件。 另一種方法是,暫存物件只有在處理一個視窗訊息時才有效。

CGdiObject::GetObject

以定義指定對象的數據填入緩衝區。

int GetObject(
    int nCount,
    LPVOID lpObject) const;

參數

nCount
指定要複製到 lpObject 緩衝區的位元元組數目。

lpObject
指向要接收信息的使用者提供緩衝區。

傳回值

擷取的位元元組數目;否則,如果發生錯誤,則為 0。

備註

函式會擷取類型相依於圖形對象的數據結構,如下列清單所示:

Object 緩衝區類型
CPen LOGPEN
CBrush LOGBRUSH
CFont LOGFONT
CBitmap 點陣圖
CPalette WORD
CRgn 不支援

如果對像是 CBitmap 物件, GetObject 則只會傳回位圖的寬度、高度和色彩格式資訊。 您可以使用 CBitmap::GetBitmapBits 來擷取實際位。

如果對像是 CPalette 物件, GetObject 則擷取指定調色盤中項目數目的 WORD。 函式不會擷取 定義調色盤的LOGPALETTE 結構。 應用程式可以藉由呼叫 CPalette::GetPaletteEntries 來取得調色盤專案的相關信息。

CGdiObject::GetObjectType

擷取 GDI 物件的型別。

UINT GetObjectType() const;

傳回值

如果成功,則為 物件的型別;否則為 0。 此值可以是下列其中一項:

  • OBJ_BITMAP位圖

  • OBJ_BRUSH筆刷

  • OBJ_FONT字型

  • OBJ_PAL調色盤

  • OBJ_PEN畫筆

  • OBJ_EXTPEN擴充畫筆

  • OBJ_REGION 區域

  • OBJ_DC裝置內容

  • OBJ_MEMDC記憶體裝置內容

  • OBJ_METAFILE元檔

  • OBJ_METADC元檔裝置內容

  • OBJ_ENHMETAFILE增強型元檔

  • OBJ_ENHMETADC增強型元檔裝置內容

CGdiObject::GetSafeHandle

m_hObject除非 this 是 NULL,否則會傳回 NULL,在此情況下會傳回 NULL。

HGDIOBJ GetSafeHandle() const;

傳回值

附加之 Windows GDI 物件的 HANDLE;否則,如果沒有附加任何物件,則為 NULL。

備註

這是一般句柄介面範例的一部分,當 NULL 是句柄的有效或特殊值時,會很有用。

範例

請參閱 CWnd::IsWindowEnabled 的範例

CGdiObject::m_hObject

句柄,其中包含附加至此物件的 HBITMAP、HRGN、HBRUSH、HPEN、HPALETTE 或 HFONT。

HGDIOBJ m_hObject;

CGdiObject::operator !=

判斷兩個 GDI 對象在邏輯上是否不相等。

BOOL operator!=(const CGdiObject& obj) const;

參數

obj
現有 CGdiObject的指標。

備註

判斷左邊的 GDI 物件是否不等於右邊的 GDI 物件。

CGdiObject::operator ==

判斷兩個 GDI 對象在邏輯上是否相等。

BOOL operator==(const CGdiObject& obj) const;

參數

obj
現有 CGdiObject的參考。

備註

判斷左邊的 GDI 物件是否等於右邊的 GDI 物件。

CGdiObject::operator HGDIOBJ

擷取附加 Windows GDI 物件的 HANDLE;否則,如果沒有附加任何物件,則為 NULL。

operator HGDIOBJ() const;

CGdiObject::UnrealizeObject

重設筆刷的來源或重設邏輯調色盤。

BOOL UnrealizeObject();

傳回值

如果成功則為非零;否則為 0。

備註

雖然 UnrealizeObject 是 類別的成員CGdiObject函式,但應該只在 或 CPalette 物件上CBrush叫用它。

針對 CBrush 物件, UnrealizeObject 會指示系統在下一次選取指定筆刷時重設指定筆刷的來源。 如果對像是 CPalette 物件, UnrealizeObject 則會指示系統實現調色盤,就像先前尚未實現一樣。 下次應用程式呼叫指定調色盤的 CDC::RealizePalette 函式時,系統會將邏輯調色盤完全重新對應至系統調色盤。

UnrealizeObject 式不應與庫存物件搭配使用。 每當設定新的筆刷原點時,都必須呼叫函 UnrealizeObject 式(透過 CDC::SetBrushOrg 函式)。 針對目前選取的筆刷或目前選取的任何顯示內容選擇區,不得呼叫 函 UnrealizeObject 式。

另請參閱

階層架構圖表
CBitmap 類別
CBrush 類別
CFont 類別
CPalette 類別
CPen 類別
CRgn 類別