读取了一个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

posted on 2011-08-26 14:59 wrh 阅读(1480) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2011年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(18)

随笔档案

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜