CImageList-CBitmap-Usage


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時指定了透明色也不起作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章