【问题标题】:BOOL CImageList::Replace( int nImage, CBitmap* pbmImage, CBitmap* pbmMask )BOOL CImageList::Replace(int nImage, CBitmap* pbmImage, CBitmap* pbmMask)
【发布时间】:2018-11-02 07:43:19
【问题描述】:

我有一个图像列表。

对于某些操作,我正在提取工具栏图像并使用

替换图像列表中的图像

BOOL CImageList::Replace( int nImage, CBitmap* pbmImage, CBitmap* pbmMask );

我需要在替换时应用遮罩颜色 RGB(255,0,255)。

ICONINFO iconinfo;
GetIconInfo(hIcon, &iconinfo);
HBITMAP hBitmap = iconinfo.hbmColor;
m_imgListSingle.Replace(0,CBitmap::FromHandle(hBitmap),???)

我不知道我需要为 CImageList 替换函数的第三个参数传递什么。

【问题讨论】:

  • 显然你已经有了一个图标。图标已经带有掩码位图。为什么你必须根据关键颜色创建自己的、可能不同的蒙版位图?

标签: winapi mfc gdi


【解决方案1】:

没有办法直接使用带有遮罩颜色的替换功能。

您可能会成功使用以下顺序:

  • 使用 CImageList::Add 方法和适当的遮罩颜色
  • 使用CImageList::GetImageInfo 提取由添加命令创建的位图
  • 对提取的位图使用CImageList::Replace 方法
  • 使用CImageList::Delete方法删除新创建的镜像。
  • 别忘了释放CImageList::GetImageInfo检索到的位图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 2010-12-16
    • 2012-04-29
    • 2021-06-07
    • 2011-01-06
    • 1970-01-01
    • 2011-06-26
    • 2012-03-07
    相关资源
    最近更新 更多