記憶體裝置內容

若要讓應用程式將輸出放在記憶體中,而不是將輸出傳送至實際裝置,請使用稱為 記憶體裝置內容之點陣圖作業的特殊裝置內容。 記憶體 DC 可讓系統將部分記憶體視為虛擬裝置。 它是記憶體中的位陣列,應用程式可以暫時用來儲存在一般繪圖介面上所建立點陣圖的色彩資料。 因為點陣圖與裝置相容,所以記憶體 DC 有時也稱為 相容的裝置內容

記憶體 DC 會儲存特定裝置的點陣圖影像。 應用程式可以呼叫 CreateCompatibleDC 函式來建立記憶體 DC。

記憶體 DC 中的原始點陣圖只是預留位置。 其維度是一個圖元一個圖元。 在應用程式開始繪製之前,它必須先呼叫 SelectObject 函式,以選取具有適當寬度和高度的點陣圖。 若要建立適當維度的點陣圖,請使用CreateBitmap、CreateBitmapIndirectCreateCompatibleBitmap函式。 選取點陣圖到記憶體 DC 之後,系統會將單一位陣列取代為足以儲存指定圖元矩形色彩資訊的陣列。

當應用程式將 CreateCompatibleDC 傳回的控制碼傳遞至其中一個繪圖函式時,要求的輸出不會出現在裝置的繪圖介面上。 相反地,系統會儲存位陣列中結果線條、曲線、文字或區域的色彩資訊。 應用程式可以呼叫 BitBlt 函式,將儲存在記憶體中的影像複製到繪圖介面,將記憶體 DC 識別為來源裝置內容,以及將視窗或螢幕 DC 識別為目標裝置內容。

在調色盤裝置上顯示從 DIB 建立的 DIB 或 DDB 時,您可以藉由排列邏輯調色盤來比對系統調色盤的配置來改善影像繪製的速度。 若要這樣做,請使用 NUMRESERVED 值呼叫 GetDeviceCaps ,以取得系統中的保留色彩數目。 然後呼叫 GetSystemPaletteEntries ,並以對應的系統色彩填入邏輯調色盤的第一個和最後一個 NUMRESERVED/2 專案。 例如,如果 NUMRESERVED 是 20,您會使用系統色彩填入邏輯調色盤的第一個和最後 10 個專案。 然後在我們的範例中填入邏輯調色盤的其餘 256-NUMRESERVED 色彩 (,其餘 236 種色彩會以 DIB 中的色彩) ,並在每一種色彩上設定PC_NOCOLLAPSE旗標。

如需色彩和調色盤的詳細資訊,請參閱 色彩。 如需點陣圖和點陣圖作業的詳細資訊,請參閱 點陣圖