DDB(裝置相關位圖)
DDB依賴于具體裝置:
DDB的顔色模式必需與輸出裝置相一緻。例如,如果目前的顯示裝置是256色模式,那麼DDB必然也是256色的。
在256色以下的位圖中存儲的像素值是系統調色闆的索引,其顔色依賴于系統調色闆。
由于DDB高度依賴輸出裝置,是以DDB隻能存在于記憶體中,它要麼在視訊記憶體中,要麼在系統記憶體中
DIB的與裝置無關性主要展現在以下兩個方面:
DIB的顔色模式與裝置無關。例如,一個256色的DIB即可以在真彩色顯示模式下使用,也可以在16色模式下使用。
256色以下(包括256色)的DIB擁有自己的顔色表,像素的顔色獨立于系統調色闆。
由于DIB不依賴于具體裝置,是以可以用來永久性地儲存圖象。DIB一般是以*.BMP檔案的形式儲存在磁盤中的,有時也會儲存在*.DIB檔案中。運作在不同輸出裝置下的應用程式可以通過DIB來交換圖象
DDB的建立
MFC的CBitmap類封裝了DDB。該類提供了幾個函數用來建立DDB:
BOOL LoadBitmap( LPCTSTR lpszResourceName );
BOOL LoadBitmap( UINT nIDResource );
該函數從資源中載入一幅位圖,若載入成功則傳回TRUE。資源位圖實際上是一個DIB,該函數在載入時把它轉換成了DDB。
BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits );
該函數用來建立一幅空白的DDB。參數nWidth和nHeight以像素為機關說明了位圖的寬度和高度。nPlanes是DDB的色平面數,nBitcount是每個色平面的顔色位數。一般來說,nPlanes為1,而nBitcount代表DDB中每個像素值所占的位數,但在建立16色DDB時,nPlanes為4,而nBitcount為1。參數lpBits指向存儲像素陣列的數組,該數組應該逐行存儲位圖的每個像素值。注意,數組中每行像素的數目必需是偶數個位元組,如果是奇數,則應該用0補足。若建立成功函數傳回TRUE。
BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight );
該函數建立一個與指定裝置上下文相容的DDB。參數pDC指向一個裝置上下文,nWidth和nHeight是DDB的尺寸。若建立成功函數傳回TRUE
DIB(裝置無關位圖)
至于DIB,MFC未提供現成的類來封裝DIB。要想使用DIB,首先應該了解DIB的結構。這個你可以
到任何一本圖像處理資料中找到詳細說明。