CImageList使用指南
在MFC中CImageList类封装了图像列表控件的功能,图像列表是一个具有相同大小的图像(可以是不同类型)的集合,其主要用于应用程序中大规模图标的存储。该控件是不可见的,通常与其它如CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl一起使用,为他们提供图标资源。
图象的每个集合中均以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)将当前图像列表设置为引用图像源
最新文章
- 关于SSMS显示select出来的数据行的疑问
- BZOJ2243——[SDOI2011]染色
- JSP页面格式化货币金额,千分位
- msnodesql的使用
- C# 获取MAC地址
- Gulan查询UI排布
- sql 行专列 列转行 普通行列转换
- JQuery基础教程:选择元素(上)
- a different object with the same identifier value was already associat
- CentOS 6用snmp配合MRTG显示系统状态
- iphone开发之适配iphone5
- 【SQL】Oracle的PL/SQL语法及其拓展数据类型总结
- c#二进制、十进制、16进制之间的转换
- git ssh 配置
- hdu1394 分治 or 线段树
- 【Java集合系列五】HashMap解析
- 内网渗透 关于GPO
- vue 动态添加 <;style>; 样式 vue动态添加 绑定自定义字体样式
- 根据Request获取客户端IP
- Linux下批处理文件编写
热门文章
- 合并k个已排序的链表 分类: leetcode 算法 2015-07-09 17:43 3人阅读 评论(0) 收藏
- Hibernate 一对一关联映射
- Mars的mp3实例
- NGINX服务器打开目录浏览功能
- 01-OC介绍
- NGUI 3.5教程(二)Label 标签 (Hello world)、多行文本
- 【Cocos2d-x】截图分享功能
- POJ 1287:Networking(最小生成树Kruskal)
- C# - 使用皮肤
- 【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)