当前位置: 代码迷 >> 综合 >> CImageList-CBitmap-Usage
  详细解决方案

CImageList-CBitmap-Usage

热度:81   发布时间:2023-12-14 20:33:13.0

title: CImageList-CBitmap-Usage
date: 2020-04-03 23:27:00
tags:

  • MFC
  • C++

? CImageList创建:读取图像,创建CImageList对象,将图像添加到对象中。

	bool bIsOK=true;int iRtn=TRUE;CBitmap bmp1,bmp2,bmp3;CImageList m_ImageList;iRtn =bmp1.LoadBitmap (IDB_BITMAP_BIRD);//加载位图多次加载可能失败,注意判断返回值:返回值(Nonzero if successful; otherwise 0)bIsOK=iRtn?true:false;iRtn =bmp2.LoadBitmap (IDB_BITMAP_DOG);bIsOK=iRtn?true:false;iRtn =bmp3.LoadBitmap (IDB_BITMAP_CAT);bIsOK=iRtn?true:false;m_ImageList.Create (16, 16, ILC_MASK | ILC_COLOR24, 0,4);iRtn =m_ImageList.Add (&bmp1, RGB (192, 192, 192));//Add返回值(Zero-based index of the first new image if successful; otherwise - 1,第i张添加成功返回i,从0开始)iRtn =m_ImageList.Add (&bmp2, RGB (192, 192, 192));iRtn =m_ImageList.Add (&bmp3, RGB (192, 192, 192));int iNum=m_ImageList.GetImageCount();bIsOK =(iNum==(iRtn+1))?true:false;if (!bIsOK){ShowMyMsgBox("上料状态显示控件,添加位图失败","错误");}
参考文档
  • bitmap

  • CImageList

  • CSDN论坛

    用了ILC_MASK后,可以这样做:
    m_ImageList.Create(15,15,ILC_COLOR24|ILC_MASK,3,2);
    CBitmap bmp1;
    bmp1.LoadBitmap(IDB_COMOFF);
    m_ImageList.Add(&bmp1,RGB(255,255,255));
    最后一个参数就是指透明的颜色,表示显示时需要将图片IDB_COMOFF的所有白色透明掉。否则就会有白色底的。每个图片都是长方形的,你的图标整个长方形区域都作为有效内容了,自然没有透明的必要。但是,很多图标只是长方形中的某一部分是有意义的,其它都是背景色。将背景色透明是最好的显示效果。因此这个ILC_MASK就帮助你实现它。否则即使Add时指定了透明色也不起作用。