zoukankan      html  css  js  c++  java
  • CImagelist 基本用法

    1.综述
    在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl一起使用,为他们提供图标资源。

    图象的每个集合中均以0为图象索引基数,可以把这些图标看成是以数组方式存储的,图像列表通常由大图标或位图构成,其中包含位图模式。实际上,所有的在同一个图象列表中的图标都被存储在一个屏幕设备的位图中。


    2.添加图像的两种方法
    通常可以向CImageList对象中添加位图和图标资源。其资源可以是程序中资源文件中的资源,也可以直接从外部文件调入。


    (1)从程序中资源文件中添加图标和位图图像如下所示(通常这是最为简单直观的方法):

    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)); 


    (2)从外部文件中添加图标和位图图像代码如下所示(这种方法可以是可执行程序更小,便于发行)

    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)); 


    这样一个图像列表控件就创建好了,并且已经添加了图像,接下来就可以在其它控件中使用其中的图像。通常需要调用SetImageList(m_pImageList)将当前图像列表设置为引用图像源。

    from:http://blog.csdn.net/yyyzlf/article/details/4916335

  • 相关阅读:
    如何解决DEDE织梦友情链接字数限制与链接个数限制的问题?
    织梦内容页调取文章缩略图
    如何删除织梦系统power by dedecms
    在联系我们里面添加公司地图坐标地理位置
    织梦后台添加了一篇文章 但是前台显示两篇一模一样的文章
    dedecms织梦上下页标签和CSS
    ZooKeeper+Dubbox分布式框架
    mac远程控制linux,安装jdk
    mac下myeclipse2017安装activiti插件
    java为什么要实现serializable序列化
  • 原文地址:https://www.cnblogs.com/lidabo/p/2855388.html
Copyright © 2011-2022 走看看