COLORMAP ColorMap[3] = {
{ RGB(128,128,128), ::GetSysColor(COLOR_BTNSHADOW) },
{ RGB(192,192,192), ::GetSysColor(COLOR_BTNFACE) },
{ RGB(255,255,255), ::GetSysColor(COLOR_BTNHILIGHT)}
};
CBitmap Bitmap;
Bitmap.LoadMappedBitmap(IDB_BITMAP, 0, ColorMap, 3);
BOOL LoadMappedBitmap(
UINT nIDBitmap, //位圖的標識
UINT nFlags = 0, //通常情況下為0,當將該位圖作
為屏蔽位圖使用時該參數為CMB_MASKED
LPCOLORMAP lpColorMap = NULL,
int nMapSize = 0);
【返回值】該成員函數調用成功返回一個非零值,否則返回零。
【參 數】
nIDBitmap
nFlags
通常情況下為0,當將該位圖作為屏蔽位圖使用時該參數為CMB_MASKED。
lpColorMap
一個指向COLORMAP數據類型數組的指針。COLORMAP的數據結構如下:
typedef struct _COLORMAP{
COLORREF from; // 邏輯調色板的顏色
COLORREF to; // 物理調色板的顏色
}COLORMAP, FAR* LPCOLORMAP;
nMapSize
指定數組中數組元素的個數。
【注 釋】本成員函數可以將一個設備無關位圖裝入CBitmap類的對象,并根據邏輯調色板與物理調色板的映射關系使系統正確地顯示該位圖。
_COLORMAP iColor[2]={{RGB(191,191,196),::GetSysColor(COLOR_3DFACE)},{RGB(192,192,192),::GetSysColor(COLOR_3DFACE)}};
m_bmToolbarHi.LoadMappedBitmap( IDB_TOOLBARHI,0,iColor,2);
m_wndToolBar.SetBitmap( (HBITMAP)m_bmToolbarHi );
這是我的代碼,可他不工作啊:~(
有個問題提醒一下:
庫中的LoadMappedBitmap函數對超過256色的圖像好像無效,而且會死掉。
對不超過256色的圖像是有效的。
我知道了,我的圖像是256色的,這不錯。但是轉換的顏色好像也算一種顏色。我把我導出的圖像色數改成128,結果就好了 :D