1. 程式人生 > >使用CImage讀取常用點陣圖格式

使用CImage讀取常用點陣圖格式

ATL類CImage(在atlimage.h)已經封裝了GDI+中隊點陣圖的常用操作,通過msdn可以看到這樣的描述“CImage provides enhanced bitmap support, including the ability to load and save images in JPEG, GIF, BMP, and Portable Network Graphics (PNG) formats.”這說明,這個類可以支援JPEG、GIF、BMP、PNG等常用圖片格式,這樣就不再需要第三方庫如FreeImage了。

從pszFileName所指定的檔案載入點陣圖,那麼這個檔案就應當是上述的那些點陣圖格式檔案

 

建立一個空的點陣圖,其大小色深為引數指定的值。

 

這裡要注意,如果要建立一個顏色格式為565的16位貼圖,必須制定eCompression和pdwBitmasks:

 

獲得點陣圖在記憶體中的實體地址。

 

這裡要注意兩點,1)由於點陣圖是由下往上掃描的,所以其返回的地址實際上是最後一行畫素的首地址;2)部分點陣圖在記憶體中的佈局有按2的冪次對齊的特性,所以每一行畫素的寬度並非點陣圖的實際寬度,而是比寬度更大的pitch(跨距),如圖

pitch的值往往是2的冪次,如256、512、1024等,這樣做的好處,當要取得點陣圖中的某個畫素時,可以使用位移運算代替乘法運算,從而加快速度,如假定pitch為1024,點陣圖首地址為p(不考慮倒序的情況),若要取得座標為x、y的畫素(x小於等於pitch,且從0開始),則需要 p + y * pitch + x,但這可以優化成 p + y << 10 + x

獲得當前點陣圖的pitch值