Device-Dependent點陣圖

裝置相依點陣圖 (DDB) 會使用單一結構 BITMAP 結構來描述。 此結構的成員指定矩形區域的寬度和高度,以圖元為單位;將裝置調色盤的專案對應至圖元之陣列的寬度;和裝置的色彩格式,以色彩平面和每個圖元的位為單位。 應用程式可以藉由呼叫 GetDeviceCaps 函式並指定適當的常數來擷取裝置的色彩格式。 請注意,DDB 不包含色彩值;相反地,色彩會以裝置相依格式顯示。 如需詳細資訊,請參閱 點陣圖中的色彩。 因為每個裝置可以有自己的一組色彩,所以針對一部裝置建立的 DDB 可能不會在不同的裝置上顯示良好。

若要在裝置內容中使用 DDB,它必須具有該裝置內容的色彩組織。 因此,DDB 通常稱為 相容的點陣圖 ,而且通常比 DIB 有更好的 GDI 效能。 例如,若要建立視訊記憶體的點陣圖,最好使用與主要顯示器相同色彩格式的相容點陣圖。 在視訊記憶體中,轉譯至點陣圖並將其顯示到畫面的速度明顯比從系統記憶體介面或直接從 DIB 快。

除了啟用更佳的 GDI 效能之外,相容的點陣圖還可用來擷取影像 (請參閱擷 取影像 ) ,並在執行時間建立點陣圖, (請參閱使用 功能表 ) 。

若要在不同的色彩組織裝置之間傳輸點陣圖,請使用 GetDIBits 將相容的點陣圖轉換成 DIB,並呼叫 SetDIBitsStretchDIBits 將 DIB 顯示至第二個裝置。

有兩種類型的 DB:可捨棄和不可分割。 可捨棄的 DDB 是點陣圖,如果點陣圖未選取到 DC,且系統記憶體不足,系統就會捨棄該點陣圖。 CreateDiscardableBitmap函式會建立可捨棄的點陣圖。 CreateBitmapCreateCompatibleBitmapCreateBitmapIndirect函式會建立不可顯示點陣圖。

應用程式可以從 DIB 建立 DDB,方法是初始化必要的結構並呼叫 CreateDIBitmap 函式。 在呼叫 CreateDIBitmap 時指定CBM_INIT相當於呼叫 CreateCompatibleBitmap 函式,以裝置格式建立 DDB,然後呼叫 SetDIBits 函式將 DIB 位轉譯為 DDB。 若要判斷裝置是否支援 SetDIBits 函式,請呼叫 GetDeviceCaps 函式,並將RC_DI_BITMAP指定為 RASTERCAPS 旗標。