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