共用方式為


繪圖物件的作業

應用程式建立顯示器或印表機 DC 之後,就可以開始在相關聯的裝置上繪製,或在記憶體 DC 的情況下開始繪製儲存在記憶體中的點陣圖上。 不過,在繪圖開始之前,有時在繪圖正在進行中時,通常需要將預設物件取代為新的物件。

應用程式可以呼叫 GetCurrentObjectGetObject 函式來檢查預設物件的屬性。 GetCurrentObject函式會傳回控制碼,識別目前的畫筆、筆刷、調色盤、點陣圖或字型,而GetObject函式會初始化包含該物件屬性的結構。

有些印表機提供駐留的手寫筆、筆刷和字型,可用來改善應用程式中的繪圖速度。 兩個函式可用來列舉這些物件: EnumObjectsEnumFontFamilies。 如果應用程式必須列舉駐留的畫筆或筆刷,它可以呼叫 EnumObjects 函式來檢查對應的屬性。 如果應用程式必須列舉常駐字型,它可以呼叫 EnumFontFamilies 函式 (,也可以列舉 GDI 字型) 。

一旦應用程式判斷預設物件需要取代,它會藉由呼叫下列其中一個建立函式來建立新的 物件。

Graphic 物件 函式
點陣圖 CreateBitmapCreateBitmapIndirectCreateCompatibleBitmapCreateDiscardableBitmapCreateDIBitmap
筆刷 CreateBrushIndirectCreateDIBPatternBrushCreateDIBPatternBrushPtCreateHatchBrushCreatePatternBrushCreateSolidBrush
調色盤 CreatePalette
字型 CreateFontCreateFontIndirect
手寫筆 CreatePenCreatePenIndirectExtCreatePen
區域 CreateEllipticRgnCreateEllipticRgnIndirectCreatePolygonRgn、CreatePolyPolygonRgnCreateRectRgn、CreateRectRgnIndirectCreateRoundRectRgn

 

每個函式都會傳回識別新物件的控制碼。 應用程式擷取控制碼之後,它必須呼叫 SelectObject 函式來取代預設物件。 不過,應用程式應該儲存識別預設物件的控制碼,並使用這個控制碼取代不再需要的新物件。 當應用程式使用新物件完成繪圖時,它必須藉由呼叫 SelectObject 函式來還原預設物件,然後藉由呼叫 DeleteObject 函式來刪除新的物件。 無法刪除物件會造成嚴重的效能問題。