CImageList

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011430225/article/details/47122965
范例1:
CImageList m_ImgList;
m_ImgList.Create(16,16,ILC_COLOR24,11,0);//创建CImageList对象
m_ImgList.SetBkColor(RGB(255,255,255));//设置背景色
//图标数组
UINT nIconID[]={IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4,IDI_ICON5,IDI_ICON6,IDI_ICON7,IDI_ICON8,IDI_ICON9,IDI_ICON10,IDI_ICON11};

for (int index=0;index<11;index++) //依次将图标ID加入链表
{
m_ImgList.Add(AfxGetApp()->LoadIcon(nIconID[index]));
}


补充说明:
CImageList类Create函数参数解析:
BOOL Create(int cx,int cy,UINT nFlags,int nInitial,int nGrow );

cx ,cy: 图片的实际像素宽与高,没有问题.
nFlags: 创建图像列表的类型,包括4/8/16/24/32/位色.
nInitial: 创建ImageList初始包括的图像个数.
nGrow: 当初始分配的图像个数不够的时候,新增一个图片时,指定图象列表能增加的新图象个数,图像列表空间不够而继续添加image时,将按照nGrow继续分配空间,设计时根据具体情况设置合适的值,避免内存频繁的改变图像列表而過度頻繁而使系統记忆体碎片化.
例如
nInitial = 2,nGrow=3
当你添加了两个图像元素以后,还想添加第三个的时候,初始创建分配的nInitial已经使用完了,此时,系统会根据nGrow,为自动增大Imagelist3个元素容量,此时我们的Imagelist就可以容纳5个图像元素了,如果5个使用完毕后,会继续按照nGrow进行再分配,类似于一个可变数组,但参数到底设置多少,还是要根据实际的情况设置合理的值,一要避免浪费空间,又要避免频繁的对Image容器进行resize操作



展开阅读全文

没有更多推荐了,返回首页