1.綜述
在MFC中CImageList類封裝了映像清單控制項的功能,映像列表是一個具有相同大小的映像(可以是不同類型)的集合,其主要用於應用程式中大規模表徵圖的儲存。該控制項是不可見的,通常與其它如CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl一起使用,為他們提供表徵圖資源。
圖象的每個集合中均以0為圖象索引基數,可以把這些表徵圖看成是以數組方式儲存的,映像列表通常由大表徵圖或位元影像構成,其中包含位元影像模式。實際上,所有的在同一個圖象列表中的表徵圖都被儲存在一個螢幕裝置的位元影像中。
2.添加映像的兩種方法
通常可以向CImageList對象中添加位元影像和表徵圖資源。其資源可以是程式中資源檔中的資源,也可以直接從外部檔案調入。
(1)從程式中資源檔中添加表徵圖和位元影像映像如下所示(通常這是最為簡單直觀的方法):
[cpp] view plaincopyprint?
- // 建立一個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));
// 建立一個CImageList類的指標變數<br />CImageList* pImageList;<br />pImageList = new CImageList();<br />pImageList->Create(32, 32, ILC_COLOR32, 0, 4); // 必不可少</p><p>// 添加表徵圖,表徵圖可以隨映像列表大小自動展開<br />pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON1));<br />pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2));</p><p>// 添加位元影像,並使黑色為透明色,如果映像列表大小和位元影像大小不一致可能會導致天添加失敗<br />CBitmap bmp;<br />bmp.LoadBitmap(IDB_BITMAP1)<br />pImageList->Add(&bmp, RGB(0, 0, 0));<br />bmp.DeleteObject();<br />bmp.LoadBitmap(IDB_BITMAP2)<br />pImageList->Add(&bmp, RGB(0, 0, 0));</p><p>
(2)從外部檔案中添加表徵圖和位元影像映像代碼如下所示(這種方法可以是可執行程式更小,便於發行)
[cpp] view plaincopyprint?
- 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));
HBITMAP hBitmap;<br />CBitmap *pBitmap;<br />CString FilePathName = "e:/TIME.bmp";<br />pBitmap = new CBitmap;<br />//從檔案匯入位元影像</p><p>HBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),FilePathName,</p><p>IMAGE_BITMAP,0,0,LR_LOADFROMFILE);<br />pBitmap->Attach(hBitmap);<br />m_pImageList->Add(pBitmap, RGB(0,0,0));</p><p>
這樣一個映像清單控制項就建立好了,並且已經添加了映像,接下來就可以在其它控制項中使用其中的映像。通常需要調用SetImageList(m_pImageList)將當前映像列表設定為引用映像源。
from:http://blog.csdn.net/yyyzlf/article/details/4916335