DDB(設(shè)備相關(guān)位圖)
DDB依賴于具體設(shè)備: DDB的顏色模式必需與輸出設(shè)備相一致,。例如,,如果當(dāng)前的顯示設(shè)備是256色模式,那么DDB必然也是256色的,。 在256色以下的位圖中存儲(chǔ)的像素值是系統(tǒng)調(diào)色板的索引,,其顏色依賴于系統(tǒng)調(diào)色板,。 由于DDB高度依賴輸出設(shè)備,所以DDB只能存在于內(nèi)存中,,它要么在視頻內(nèi)存中,,要么在系統(tǒng)內(nèi)存中
DIB的與設(shè)備無關(guān)性主要體現(xiàn)在以下兩個(gè)方面: DIB的顏色模式與設(shè)備無關(guān)。例如,,一個(gè)256色的DIB即可以在真彩色顯示模式下使用,,也可以在16色模式下使用。 256色以下(包括256色)的DIB擁有自己的顏色表,,像素的顏色獨(dú)立于系統(tǒng)調(diào)色板,。 由于DIB不依賴于具體設(shè)備,因此可以用來永久性地保存圖象,。DIB一般是以*.BMP文件的形式保存在磁盤中的,,有時(shí)也會(huì)保存在*.DIB文件中。運(yùn)行在不同輸出設(shè)備下的應(yīng)用程序可以通過DIB來交換圖象
DDB的創(chuàng)建 MFC的CBitmap類封裝了DDB,。該類提供了幾個(gè)函數(shù)用來創(chuàng)建DDB: BOOL LoadBitmap( LPCTSTR lpszResourceName ); BOOL LoadBitmap( UINT nIDResource ); 該函數(shù)從資源中載入一幅位圖,,若載入成功則返回TRUE。資源位圖實(shí)際上是一個(gè)DIB,,該函數(shù)在載入時(shí)把它轉(zhuǎn)換成了DDB,。
BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits ); 該
函數(shù)用來創(chuàng)建一幅空白的DDB。參數(shù)nWidth和nHeight以像素為單位說明了位圖的寬度和高度,。nPlanes是DDB的色平面
數(shù),,nBitcount是每個(gè)色平面的顏色位數(shù)。一般來說,,nPlanes為1,,而nBitcount代表DDB中每個(gè)像素值所占的位數(shù),但在創(chuàng)建16色
DDB時(shí),,nPlanes為4,而nBitcount為1,。參數(shù)lpBits指向存儲(chǔ)像素陣列的數(shù)組,該數(shù)組應(yīng)該逐行存儲(chǔ)位圖的每個(gè)像素值,。注意,,數(shù)組中
每行像素的數(shù)目必需是偶數(shù)個(gè)字節(jié),如果是奇數(shù),,則應(yīng)該用0補(bǔ)足,。若創(chuàng)建成功函數(shù)返回TRUE。
BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight ); 該函數(shù)創(chuàng)建一個(gè)與指定設(shè)備上下文兼容的DDB,。參數(shù)pDC指向一個(gè)設(shè)備上下文,,nWidth和nHeight是DDB的尺寸。若創(chuàng)建成功函數(shù)返回TRUE
DIB(設(shè)備無關(guān)位圖)
至于DIB,,MFC未提供現(xiàn)成的類來封裝DIB,。要想使用DIB,,首先應(yīng)該了解DIB的結(jié)構(gòu)。這個(gè)你可以 到任何一本圖像處理資料中找到詳細(xì)說明,。
DIB
的顏色信息儲(chǔ)存在自己的顏色表中,,程序一般要根據(jù)顏色表為DIB創(chuàng)建邏輯調(diào)色板。在輸出一幅DIB之前,,程序應(yīng)該將其邏輯調(diào)色板選入到相關(guān)的設(shè)備上下文中
并實(shí)現(xiàn)到系統(tǒng)調(diào)色板中,,然后再調(diào)用相關(guān)的GDI函數(shù)(如::SetDIBitsToDevice或::StretchDIBits)輸出DIB。在輸出過
程中,,GDI函數(shù)會(huì)把DIB轉(zhuǎn)換成DDB,,這項(xiàng)工作主要包括以下兩步:
將DIB的顏色格式轉(zhuǎn)換成與輸出設(shè)備相同的顏色格式。例如,,在真彩色的顯示模式下要顯示一個(gè)256色的DIB,,則應(yīng)該將其轉(zhuǎn)換成24位的顏色格式。
將DIB像素的邏輯顏色索引轉(zhuǎn)換成系統(tǒng)調(diào)色板索引,。
|