Device-Dependent 位陣圖
裝置相依點陣圖 (DDB) 是使用單一結構來描述,BITMAP 結構。 這個結構的成員會以像素為單位指定矩形區域的寬度和高度;將專案從裝置調色盤對應至像素的數位寬度;和裝置的色彩格式,就每圖元的色彩平面和位而言。 應用程式可以呼叫 getDeviceCaps 函式並指定適當的常數,以擷取裝置的色彩格式。 請注意,DDB 不包含色彩值;相反地,色彩會以裝置相依的格式。 如需詳細資訊,請參閱點陣圖中的 色彩。 由於每個裝置可以有自己的一組色彩,因此針對一部裝置建立的 DDB 可能無法在不同的裝置上顯示良好。
若要在裝置內容中使用 DDB,它必須具有該裝置內容的色彩組織。 因此,DDB 通常稱為 相容的點陣圖,而且通常具有比 DIB 更好的 GDI 效能。 例如,若要建立視訊記憶體的位圖,最好使用與主要顯示器相同的色彩格式相容的點陣圖。 在視訊記憶體中,轉譯為位圖,並將其顯示到畫面的速度明顯比系統記憶體表面或直接從 DIB 快。
除了啟用更好的 GDI 效能之外,相容的點陣圖還可用來擷取影像(請參閱 擷取影像),以及在運行時間建立位圖,請參閱 中的(請參閱使用功能表 )。
若要在具有不同色彩組織的裝置之間傳輸位圖,請使用 GetDIBits,將相容的位圖轉換成 DIB,並呼叫 SetDIBits 或 StretchDIBits,將 DIB 顯示給第二個裝置。
DB 有兩種類型:可捨棄和非可分割。 可捨棄的 DDB 是一個點陣圖,如果點陣圖未選取到 DC,而且系統記憶體不足,則系統會捨棄該位圖。 CreateDiscardableBitmap 函式會建立可捨棄的點陣圖。 CreateBitmap、CreateCompatibleBitmap和 CreateBitmapIndirect 函式會建立不可顯示位圖。
應用程式可以從 DIB 建立 DDB,方法是初始化必要的結構,並呼叫 CreateDIBitmap 函式。 在呼叫 createDIBitmap 中指定CBM_INIT相當於呼叫 CreateCompatibleBitmap 函式,以裝置格式建立 DDB,然後呼叫 SetDIBits 函式,將 DIB 位轉譯為 DDB。 若要判斷裝置是否支援 SetDIBits 函式,請呼叫 GetDeviceCaps 函式,並將RC_DI_BITMAP指定為 RASTERCAPS 旗標。