读取了一个bitmap,把它的一些颜色值改成另外一种颜色。这个怎么办啊??

读取了一个bitmap,把它的一些颜色值改成另外一种颜色。这个怎么办啊??

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

你可能感兴趣的:(读取了一个bitmap,把它的一些颜色值改成另外一种颜色。这个怎么办啊??)