CxImage的一些成員變量:
class CxImage
{
...
protected:
void* pDib; //包含文件頭,調色板等等
BITMAPINFOHEADER head; //標準的文件頭(位圖)
CXIMAGEINFO info; //擴展了的信息
BYTE* pSelection; //用戶選中的區域
BYTE* pAlpha; //alpha通道
CxImage** pLayers; //通用層
};
typedef struct tagCxImageInfo
{
DWORD dwEffWidth; //DWORD 掃描線寬
BYTE* pImage; //圖像位數
void* pGhost; //if this is a ghost, pGhost point to the body
DWORD dwType; //原圖像的格式
char szLastError[256]; //出錯信息
long nProgress; //監視循環的次數
long nEscape; //跳出標誌
long nBkgndIndex; //GIF, PNG, MNG格式使用
RGBQUAD nBkgndColor; //RGB三原色透明度
BYTE nQuality; //JPEG格式使用
long nFrame; //TIF, GIF, MNG使用 :實際的幀數
long nNumFrames; //TIF, GIF, MNG使用 :幀總數
DWORD dwFrameDelay; //GIF, MNG使用
long xDPI; //水平分辨率
long yDPI; //垂直分辨率
RECT rSelectionBox; //選中的矩形區
BYTE nAlphaMax; //陰影的最大不透明度
bool bAlphaPaletteEnabled; //如果調色板中有Alpha通道則爲真
bool bEnabled; //打開繪圖函數
long xOffset;
long yOffset;
DWORD dwEncodeOption; //一些編碼選項
RGBQUAD last_c; //一些優化選項
BYTE last_c_index;
bool last_c_isvalid;
long nNumLayers;
DWORD dwFlags;
} CXIMAGEINFO;
一個CxImage對象是一個擴展了的位圖,同時也是一組層,每個層只有在需要時纔會分配相應的緩衝區。
CxImage::pDib代表着背景圖像,CxImage::pAlpha代表着透明層,CxImage:: pSelection代表着被選中的層,被用來創建圖像處理時讓用戶感興趣的區域。
在這三個特殊層面的基礎上,你可以增加一些額外的層,這些層可以存儲在 CxImage::pLayers中。
一般說來,層是一個完整的CxImage對象。因此,你可以構造很複雜的嵌套層。