天天看點

Device-Dependent Bitmaps (DDB) 裝置相關位圖

裝置相關的位圖(DDB)使用單一結構BITMAP結構描述。該結構的成員指定矩形區域的寬度和高度,以像素為機關;将條目從裝置調色闆映射到像素的數組的寬度;以及器件的顔色格式,在每個像素的顔色平面和位數方面。應用程式可以通過調用GetDeviceCaps函數并指定适當的常量來檢索裝置的顔色格式。請注意,DDB不包含顔色值;相反,顔色是依賴于裝置的格式。有關詳細資訊,請參閱位圖中的顔色。因為每個裝置都可以有自己的顔色集,是以為一個裝置建立的DDB可能在不同的裝置上可能不會很好地顯示。

要在裝置上下文中使用DDB,它必須具有該裝置上下文的顔色組織。是以,DDB通常被稱為相容位圖,并且通常具有比DIB更好的GDI性能。例如,要建立視訊記憶體的位圖,最好使用與主顯示屏相同顔色格式的相容位圖。一旦在視訊存儲器中,渲染到位圖并将其顯示到螢幕上顯着快于從系統存儲器表面或直接從DIB。

除了能夠實作更好的GDI性能之外,還可以使用相容的位圖來捕獲圖像(請參閱捕獲圖像),并在運作時為菜單建立位圖,請參見“建立位圖”(請參閱​​使用菜單)。

要在具有不同顔色組織的裝置之間傳輸位圖,請使用GetDIBits将相容位圖轉換為DIB,并調用SetDIBits或StretchDIBits以将DIB顯示到第二個裝置。

DDB有兩種類型:可丢棄和不可忽略。一個可丢棄的DDB是一個位圖,系統丢棄位圖沒有被選中到DC,如果系統記憶體不足。CreateDiscardableBitmap函數建立可丢棄的位圖。CreateBitmap,CreateCompatibleBitmap和CreateBitmapIndirect函數建立不可忽略的位圖。

相關閱讀:

<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/details/76718768">device-independent bitmap (DIB) 裝置無關位圖</a>

<a target="_blank" href="http://blog.csdn.net/testcs_dn/article/month/2017/08">BMP圖像資料格式詳解</a>