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, //位圖的標(biāo)識(shí)
UINT nFlags = 0, //通常情況下為0,當(dāng)將該位圖作
為屏蔽位圖使用時(shí)該參數(shù)為CMB_MASKED
LPCOLORMAP lpColorMap = NULL,
int nMapSize = 0);
【返回值】該成員函數(shù)調(diào)用成功返回一個(gè)非零值,否則返回零。
【參 數(shù)】
nIDBitmap
nFlags
通常情況下為0,當(dāng)將該位圖作為屏蔽位圖使用時(shí)該參數(shù)為CMB_MASKED。
lpColorMap
一個(gè)指向COLORMAP數(shù)據(jù)類型數(shù)組的指針。COLORMAP的數(shù)據(jù)結(jié)構(gòu)如下:
typedef struct _COLORMAP{
COLORREF from; // 邏輯調(diào)色板的顏色
COLORREF to; // 物理調(diào)色板的顏色
}COLORMAP, FAR* LPCOLORMAP;
nMapSize
指定數(shù)組中數(shù)組元素的個(gè)數(shù)。
【注 釋】本成員函數(shù)可以將一個(gè)設(shè)備無關(guān)位圖裝入CBitmap類的對(duì)象,并根據(jù)邏輯調(diào)色板與物理調(diào)色板的映射關(guān)系使系統(tǒng)正確地顯示該位圖。
_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 );
這是我的代碼,可他不工作啊:~(
有個(gè)問題提醒一下:
庫中的LoadMappedBitmap函數(shù)對(duì)超過256色的圖像好像無效,而且會(huì)死掉。
對(duì)不超過256色的圖像是有效的。
我知道了,我的圖像是256色的,這不錯(cuò)。但是轉(zhuǎn)換的顏色好像也算一種顏色。我把我導(dǎo)出的圖像色數(shù)改成128,結(jié)果就好了 :D