MFC CImageList详解

文章描述:-2022年2月19日发(作者:用友uap)MFC CImageList 详解 2010-12-23 21:28 图像列表控件(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,(可以把这些图标看成是以数组方式存储的),图像列表通常由大图标或位图构成,其中包含透明位图模式(实际上,所有的再一个图像列表中的图标都被存储在一个屏幕设备的位图中)。可以利用windo

-

MFC CImageList详解 2022年2月19日发(作者:用友uap)


MFC CImageList 详解
2010-12-23 21:28
图像列表控件(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索
引序号基数,(可以把这些图标看成是以数组方式存储的),图像列表通常由大图标或位
图构成,其中包含透明位图模式(实际上,所有的再一个图像列表中的图标都被存储在一
个屏幕设备的位图中)。可以利用windows API来绘制、建立和删除图像,并能实现增加、
删除、替换和拖动图像邓操作。图像列表控件提供了控制图像列表额基本方法,这些方法
在Windows 95及以后版本才能实现。该控件是不可见的,通常与其他如CListBox、
CComboBox、CComboBoxEx以及CTabCtrl一起使用,为他们提供图标资源。
一、图像控件的对象结构
1 图像控件的数据成员
m_hImageList连接图像对象的控件句柄
2 图像控件的建立方法
CImageList& ImageList建立图像控件对象结构,Create初始化图像列表并绑定对象,
图像控件的建立方法如下
BOOL Create(int cx,int cy,UIT nFlags,int nInitial,int nGrow);
BOOL Create(UIT nBitmapID,int cx,int nGrow,COLORREF crMask);
BOOL Create(LPCTSTR lpszBitmapID,int cx,int nGrow,COLORREF crMask);
BOOL Create(CImageList& imageList1,int nImage1,CImageList& imagelist2,
int nImage2,int dx,int dy);
其中各项参数的含义为:cx定义图像的宽度,单位为像素;cy定义图像的高度,单位
为像素;nFlags确定建立图像列表的类型,可以是以下值的组合:ILC_COLOR、
ILC_COLOR4、ILC_COLOR8、ILC_COLOR16、ILC_COLOR24、ILC_COLOR32、 ILC_COLORDDB和
ILS_MASK;nInitial用来确定图像列表包含的图像;nGrow用来确定图像列表可控制的图
像数量。
nBitmapID用来确定图像列表联系的位图标志值;crMask表示颜屏蔽位;
lpszBitmapID用来确定包含位图资源额标识串;imagellist1指向图像列表控件对象的一
个指针;nImage1图像列表1中包含的图像数量;imagelist2指向图像列表控件对象的一
个指针。


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

创建一个CImageList类的指针变量
CImageList* pImageList;
pImageList = new CImageList();
pImageList->Create(32, 32, ILC_COLOR32, 0, 4);

添加图标,图标可以随图像列表大小自动拉伸
pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICO1));
pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICO2));

添加位图,并使黑为透明,如果图像列表大小和位图大小不一致可能会导致天添加
失败
CBitmap bmp;
tmap(IDB_BITMAP1)
pImageList->Add(&bmp, RGB(0, 0, 0));
Object();
tmap(IDB_BITMAP2)
pImageList->Add(&bmp, RGB(0, 0, 0));
(2)从外部文件中添加图标和位图图像


HBITMAP hBitmap;
CBitmap *pBitmap;
CString FilePathame =
pBitmap = new CBitmap;
从文件导入位图
hBitmap =
(HBITMAP)LoadImage(AfxGetInstanceHandle(),FilePathame,IMAGE_BITMAP,0,0,LR_LOAD
FROMFILE);
pBitmap->Attach(hBitmap);
m_pImageList->Add(pBitmap, RGB(0,0,0));
这样一个图像列表控件就创建好了,并且已经添加了图像,接下来就可以在其它控件
中使用其中的图像。通常需要调用SetImageList(m_pImageList)将当前图像列表设置为引
用图像源。
3 图像控件的属性类
图像控件的属性类包括返回m_hImageList控制句柄GetSafeHandle,取得图像列表中的
图像数量GetImageCount,设置图像列表的背景颜SetBkColor,取得图像列表的背景颜
GetBkColor。
4 图像控件的操作方法
图像控件的操作方法包括将一个图像列表绑定到一个对象上Attach、将对象上的图像列
表解除绑定并返回句柄Detach、删除一个图像列表DeleteImageList、将一个图像增加到
图像列表中Add和将一个图像从图像列表中删除Remove等。
另外一种加载BMP位图的方法是:

CImageList* m_pImageList = new CImageList();

HBITMAP hBitmap;
CBitmap* pBitmap;
CString strFileame;
(

-

MFC CImageList详解

发布时间:2022-02-19 00:46:01
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 13 条评论,688人围观)

最近发表

随便看看

热门文章

标签列表