CImageList使用指南

1.綜述
在MFC中CImageList類封裝了圖像列表控件的功能,圖像列表是一個具有相同大小的圖像(可以是不同類型)的集合,其主要用於應用程序中大
規模圖標的存儲,該控件是不可見的。通常與其它如CListBox,CComboBox,CComboBoxEx以及CTabCtrl一起使用,爲他們提供圖標資源。
圖象的每個集合中均以0爲圖象索引基數,可以把這些圖標看成是以數組方式存儲的,圖像列表通常由大圖標或位圖構成,其中包含位圖模式,
實際上,所有的在同一個圖象列表中的圖標都被存儲在一個屏 
幕設備的位圖中。
2.添加圖像的兩種方法
通常可以向CImageList對象中添加位圖和圖標資源。其資源可以是程序中資源文件中的資源,也可以直接從外部文件調入。
(1)從程序中資源文件中添加圖標和位圖圖像如下所示(通常這是最爲簡單直觀的方法):

// 創建一個CImageList類的指針變量
CImageList* pImageList;
pImageList
= new CImageList();
pImageList
->Create(32, 32, ILC_COLOR32, 0, 4);

// 添加圖標,圖標可以隨圖像列表大小自動拉伸
pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
pImageList
->Add(AfxGetApp()->LoadIcon(IDI_ICON2));

// 添加位圖,並使黑色爲透明色,如果圖像列表大小和位圖大小不一致可能會導致天添加失敗
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1)
pImageList
->Add(&bmp, RGB(0, 0, 0));
bmp.DeleteObject();
bmp.LoadBitmap(IDB_BITMAP2)
pImageList
->Add(&bmp, RGB(0, 0, 0));
(2)從外部文件中添加圖標和位圖圖像代碼如下所示(這種方法可以是可執行程序更小,便於發行)

HBITMAP hBitmap;
CBitmap
*pBitmap;
CString FilePathName
= "e:/TIME.bmp";
pBitmap
= new  CBitmap;
// 從文件導入位圖
hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),FilePathName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
pBitmap
->Attach(hBitmap);
m_pImageList
->Add(pBitmap, RGB(0,0,0));
這樣一個圖像列表控件就創建好了,並且已經添加了圖像,接下來就可以在其它控件中使用其中的圖像。通常需要調用SetImageList(m_pImageList)將當前圖像列表設置爲引用圖像源。

 

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