CImagelist 基本用法

來源:互聯網
上載者:User

1.綜述
在MFC中CImageList類封裝了映像清單控制項的功能,映像列表是一個具有相同大小的映像(可以是不同類型)的集合,其主要用於應用程式中大規模表徵圖的儲存。該控制項是不可見的,通常與其它如CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl一起使用,為他們提供表徵圖資源。

圖象的每個集合中均以0為圖象索引基數,可以把這些表徵圖看成是以數組方式儲存的,映像列表通常由大表徵圖或位元影像構成,其中包含位元影像模式。實際上,所有的在同一個圖象列表中的表徵圖都被儲存在一個螢幕裝置的位元影像中。

2.添加映像的兩種方法
通常可以向CImageList對象中添加位元影像和表徵圖資源。其資源可以是程式中資源檔中的資源,也可以直接從外部檔案調入。

(1)從程式中資源檔中添加表徵圖和位元影像映像如下所示(通常這是最為簡單直觀的方法):

[cpp] view plaincopyprint?
  1. // 建立一個CImageList類的指標變數 
  2. CImageList* pImageList; 
  3. pImageList = new CImageList(); 
  4. pImageList->Create(32, 32, ILC_COLOR32, 0, 4); // 必不可少 
  5.  
  6. // 添加表徵圖,表徵圖可以隨映像列表大小自動展開 
  7. pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON1)); 
  8. pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON2)); 
  9.  
  10. // 添加位元影像,並使黑色為透明色,如果映像列表大小和位元影像大小不一致可能會導致天添加失敗 
  11. CBitmap bmp; 
  12. bmp.LoadBitmap(IDB_BITMAP1) 
  13. pImageList->Add(&bmp, RGB(0, 0, 0)); 
  14. bmp.DeleteObject(); 
  15. bmp.LoadBitmap(IDB_BITMAP2) 
  16. 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?
  1. HBITMAP hBitmap; 
  2. CBitmap *pBitmap; 
  3. CString FilePathName = "e:/TIME.bmp"; 
  4. pBitmap = new   CBitmap; 
  5. //從檔案匯入位元影像 
  6.  
  7. HBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),FilePathName, 
  8.  
  9. IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 
  10. pBitmap->Attach(hBitmap); 
  11. 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.