图像列表控制(CImageList)

ImageList与ListView控件 一、基本概念 1、ListView控件 ImageList组件,又称为图片存储组件,它主要用于存储图片资源,然后在控件上显示出来,这样就简化了对图片的管理。ImageList组件的主要属性是Images,它包含关联控件将要使用的图片。每个单独的图片可以通过其索引值或键值来访问。 2、ListView控件 参考:ListView用法 ListView控件,又称为列表视图控件,它主要用于显示带图标的项列表,其中可以显示大图标、小图标和数据。 基本属性: (1)FullRowSelect:设置是否行选择模式。(默 阅读详情

图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。

m_hImageList 连接图像对象的控制句柄

 CimageList&imageList建立图像控制对象结构

  Create 初始化图像列表并绑定对象

  图像控制的建立方法如下:

  BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow );

  BOOL Create( UINT 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和ILC_MASK;nInitial用来确定图像列表包含的图像数量;nGrow用来确定图像列表可控制的图像数量。

  nBitmapID 位图资源ID;crMask表示颜色屏蔽位;

  LpszBitmapID 位图资源的路径;

  imagelist1 指向图像列表控制对象的一个指针;nImage1图像列表1中包含的图像数量;imagelist2指向图像列表控制对象的一个指针;nImage2图像列表2中包含的图像数量;dx表示以象素为单位的图像宽度;dy表示以象素为单位的图像高度。

  同样,图像控制的建立也包括两个步骤,首先建立图像列表结构,然后建立图像列表控制。

  图像控制的属性类包括返回m_hImageList.控制句柄GetSafeHandle、取得图像列表中的图像数量GetImageCount、设置图像列表的背景颜色SetBkColor、取得图像列表的背景颜色GetBkColor和取得图像的有关信息SetBkColor。

  图像控制的操作方法包括将一个图像列表绑定到一个对象上Attach、将对象上的图像列表解除绑定并返回句柄Detach、删除一个图像列表DeleteImageList、将一个图像增加到图像列表中Add和将一个图像从图像列表中删除Remove等。

 

标志指示图像列表是否是屏蔽的。(其他重载创建屏蔽的图像列表)。

  绘制非屏蔽图像时,只是简单地将其复制到目标DC。绘制屏蔽图像时,图像位和屏蔽位组合,一般在位图中产生显露目标DC背景色的透明区域。绘制屏蔽图像时可以指定几种绘图样式。例如,可以指定图像进行抖色处理以指示选定的对象。

  构造CImageList对象,调用其Create函数的一个重载来创建图像列表并将图像列表附加到CImageList对象;

  如果在创建图像列表时没有添加图像,则调用Add或Read成员函数向图像列表添加图像;

  通过调用控件的适当成员函数,将图像列表与此控件相关联,或者您自己使用图像列表的Draw成员函数绘制图像列表中的图像;

  或许允许用户是以图像列表的内置拖动支持拖动图像。

  注意:如果图像列表是用new运算符创建的,则在操作完CImageList对象后必须销毁它。

  Replace成员函数用新的图像替换图像列表(CImageList)中的图像。如果需要动态增加图像列表中的图像数,该函数也有用。SetImageCount函数动态更改存储在图像列表中的图像数。如果增加图像列表的大小,请调用Replace向新图像增加图像。如果减少图像列表的大小,则释放超过新大小的图像。

  Remove成员函数移除图像列表中的图像。Copy成员函数可以在图像列表内复制或交换图像。该函数使您得以指示是否应将源图像复制到目标索引,还是应交换源图像和目标图像。

  若要通过合并两个图像列表来创建新的图像列表,请使用Create成员函数的适当重载。该Create重载合并现有的图像列表的第一个图像,并将所得的图像存储在新的图像列表对象中。通过在第一个图像上透明地绘制第二个图像来创建新图像。新图像的屏蔽是对两个现有图像的屏蔽位执行逻辑OR元算的结果。

  该操作一直重复到所有图像都合并并添加到新的图像列表中。

  可以调用Write成员函数将图像信息写入存档,并通过调用Read成员函数读回。

  GetSafeHandle、Attach和Detach成员函数使您得以操作附加到CImageList对象的图像列表句柄,而DeleteImageList成员函数删除图像列表但不销毁CImageList对象。

  若要绘制图像,请使用CImageList::Draw成员函数。您将需要指定指向DC的指针,要绘制的图像的索引,DC中绘制图像的位置,以及一组指示绘图样式的标志。

  指定ILD_TRANSPARENT样式后,Draw是以一个两步进程来绘制屏蔽的图像。

对于图像控制,同样不能单独使用,必须与列表控制、树控制和标签控制相互结合应用,下面分别介绍其具体应用技巧。

图像控制在列表控制中的应用技巧

  1.1 设置图像控制CListCtrl::SetImageList的调用格式如下:

  CImageList* SetImageList( CImageList* pImageList, int nImageList );

  其返回值是指向前一个图像列表控制的一个指针,如果不存在前一个图像列表则为NULL;其中参数pImageList是指向图像列表的标识,nImageList是图像列表的类型,可以是如下值:

  LVSIL_NORMAL 用大图标方式进行图像列表;

  LVSIL_SMALL 用小图标方式进行图像列表;

  LVSIL_STATE 以图像状态进行图像列表;

  1.2 取得图像控制CListCtrl::GetImageList的调用格式如下:

  CImageList* GetImageList( int nImageList ) const;

  其返回值为指向图像列表控制的指针,其中nImageList用来确定取得返回值的图像列表的值,其取值与设置图像列表函数相同。

  ③图像控制在列表控制中的应用示例

  CImageList Cil1,Cil2; //定义大小图标像列表

  CVCLISTApp *pApp=(CVCLISTApp *)AfxGetApp();//取得列表控制程序

  Cil1.Create(32,32,TRUE,2,2);//建立32位图像控制

  Cil1.Add(pApp->LoadIcon(IDI_GJ));//增加选中状态图像

  Cil1.Add(pApp->LoadIcon(IDI_XS));//增加非选中状态图像

  Cil2.Create(16,16,TRUE,2,2); //建立16位图像控制

  Cil2.Add(pApp->LoadIcon(IDI_GJ));//增加选中状态图像

  Cil2.Add(pApp->LoadIcon(IDI_XS));//增加非选中状态图像

  m_ListCtrl.SetImageList(&Cil1,LVSIL_NORMAL);//设置大图标控制

  m_ListCtrl.SetImageList(&Cil2,LVSIL_SMALL);//设置小图标控制

图像控制在树控制中的应用技巧

  2.1 设置图像控制CTreeCtrl::SetImageList的调用格式如下:

  CImageList* SetImageList( CImageList * pImageList, int nImageListType );

  其返回值为指向前前一个图像列表的指针,否则为NULL;参数pImageList为指向图像列表的标识,如果pImageList为NULL则所有的图像都将从树控制中被清除;nImageListType为图像列表设置的类型,可以是如下值之一:

  TVSIL_NORMAL 设置正常图像列表,其中包括选中和非选中两种图标;

  TVSIL_STATE 设置图像列表状态,指用户自定义状态;

  2.2 取得图像控制CTreeCtrl::GetImageList的调用格式如下:

  CImageList* GetImageList( UINT nImage );

  如果调用成功则返回图像列表控制指针,否则为NULL;nImage为取得返回值的图像列表类型,其取值和取得图像列表控制完全相同。

  2.3 图像控制在树控制中的应用示例

  CImageList Cil1,Cil2;//定义大小图标像列表

  CVCTREEApp *pApp=(CVCTREEApp *)AfxGetApp();//获取应用程序指针

  Cil1.Create(16,16,ILC_COLOR,2,2);//建立图像控制

  Cil1.Add(pApp->LoadIcon(IDI_PM));//增加选中状态图像

  Cil1.Add(pApp->LoadIcon(IDI_CJ));//增加非选中状态图像

  m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL);//设置图像控制列表

  然后在树控制的结构定义中进行如下设置:

  TCItem.item.iImage=0; //设置未选中图像索引号

  TCItem.item.iSelectedImage=1;//设置选中时图像引号

  3 图像控制在控制中的应用技巧

  1.设置图像控制CTabCtrl::SetImageList的调用格式

  CImageList * SetImageList( CImageList * pImageList );

  其返回值为指向前一个图像列表的指针,如果不存在前一个图像列表则为NULL;pImageList为标识TAB控制的图像列表指针。

  2 取得图像控制CTabCtrl::GetImageList的调用格式

  HIMAGELIST GetImageList() const;

  其返回值为指向TAB控制的图像列表指针,如果调用不成功则为NULL。

  CImageList类的成员

  数据成员

  

m_hImageList包含附加给此对象关联的图象列表的句柄

  构造函数

  

CImageList构造一个CImageList对象Create初始化一个图象列表并把它附加给一个CImageList对象

  属性

  

GetSafeHandle获取m_hImageListoperator HIMAGELIST返回附加给CImageList的HIMAGELISTFromHandle在给设备一个上下文的句柄时,返回指向CImageList对象的指针。如果无CImageList对象附加给句柄,则临时CImageList对象被创建和附加FromHandlePermanent在给图象列表一个句柄时,返回指向CImageList对象的指针。如果无CImageList对象附加给句柄,则返回NULLDeleteTempMap被CWinApp闲置处理程序调用,删除一个由FromHandle创建的临时CImageList对象GetImageCount获取图象列表中的图象数SetBkColor设置图象列表的背景色GetBkColor获取图象列表的当前背景色GetImageInfo获取图象信息

  操作

  

Attach将一个图象列表附加给一个CImageList对象Detach分离某图象列表对象与某CImageList对象并返回图象列表的句柄DeleteImageList删除一个图象列表SetImageCount重新设置图象列表中的图象数Add添加一个或多个图象到图象列表中Remove从图象列表中移走一个图象Replace用新图象替代图象列表中的图象ExtractIcon构造一个基于某图象的图标的图象列表或掩码Draw绘制在某拖拉操作中正被拖动的图象SetOverlayImage添加一个图象基于零的索引到将被用于覆盖掩码的图象列表中Copy拷贝CimageList对象中的图象DrawIndirect绘制图象列表中的图象SetDragCursorImage创建一个新的拖动图象GetDragImage取得用于拖动的临时图象列表Read从归档文件中读取图象列表Write往归档文件中写图象列表BeginDrag开始拖动图象DragEnter在拖动操作中封锁更新并在确定位置显示拖动图象EndDrag结束一个拖动操作DragLeave解冻窗口并隐藏拖动图象,使窗口能被更新DragMove移动正在拖放操作中被拖动的图象DragShowNolock在一个拖动操作中显示或隐藏拖动图象,不封锁窗口

MFC高级控件之 图像列表控件 图像列表控价与其它控件不同,不能从工具箱的控件面板添加到程序界面中。图像列表控件是一个类:CImageList。要使用该控件,需通过编辑代码实现。该控件用以存储大小相同的一组图像。常使用图像列表控件来为工具条、树状控件、列表控价等的内容设置图标。当然也用可以图像列表将图像绘制到程序中。本文将详细介绍图像列表控件,并以一个的实例演示如何使用图像列表。 阅读详情

相关推荐

CImagelist 基本用法

CImagelist 基本用法 CImagelist 基本用法 CImagelist 基本用法

C#中Imagelist控件详解,让你一看就会!

一、使用编译器自动生成imagelist控件 1、首先拖入一个imagelist控件,其将在窗口下面分栏显示: 2、插入一些图片: 3、系统自己生成的代码: private void InitializeComponent() { this.components = new System.ComponentModel.Container(); ...

路虽远,行则必至! 1万+

别再手动算频谱了!用这个在线FFT工具,5分钟搞定JSON/CSV数据分析

本文介绍了一款高效的在线FFT工具,帮助用户快速分析JSON/CSV格式的时域数据,5分钟内完成频谱分析。通过傅里叶变换(FFT)算法,大幅提升计算效率,解决传统手动计算的痛点,适用于工业振动分析、设备故障诊断等场景。

weixin_29172201的博客 258

C#的ImageList控件

根据图片所在目录,定义图片文件的临时变量。

wenchm的博客 3563

从光猫到机顶盒:H10G-13融合网关双系统网络配置全解析(含超密获取技巧)

本文详细解析了中国移动H10G-13融合网关的双系统网络配置,涵盖光猫路由与安卓电视盒子的协同工作。通过晶晨S905L3芯片的优化,设备实现高效网络接入与安卓9.0系统的定制化应用,特别适合酒店和民宿行业的智能化改造。文章还提供了超密获取技巧和线刷固件包的实用指南。

weixin_42525264的博客 946

单细胞测序数据读取实战指南:从入门到精通

本文提供了单细胞测序数据读取的实战指南,涵盖从标准10X Genomics格式到通用表达矩阵及RDS文件的读取方法。文章重点解析了数据读取的核心步骤、常见问题解决方案及进阶技巧,旨在帮助用户夯实数据分析基础,确保后续分析流程的准确性。

weixin_29095587的博客 460

C++ 控件之 CImageList

图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。(一)图像控制的对象结构

VGS® 研发笔记 2046

机器人多学科仿真软件:Webots_(19).Webots的插件与扩展开发

通过上述步骤,您可以开发和使用Webots的插件、扩展和接口,以增强其功能和灵活性。

kkchenjj的博客 925

[WTL] 使用CImageList

用CImageList读取256-bit以上的位图(注意红色的部分),位图的底色要是白色:  m_images.CreateFromImage ( IDB_TOOLBAR, 16, 1, CLR_NONE, IMAGE_BITMAP,                LR_CREATEDIBSECTION );然后在Treeview(或其它场合)中使用:      m_tree1.Attach(Ge...

weixin_34216107的博客 239

Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行单板压降仿真分析操作指导

如果需要单独对某个via设置参数,右侧选择Setup by padstack,下方下拉选择某个via,单独设置参数即可。举例:板厚1.6mm,内层1OZ(1.2mil,即0.03mm),铜皮宽度1mm,20度温升,允许通流I为2.5A。目的是模拟实际情况,via的孔壁电镀1mil,中间是空心的,让via不完全被填充金属成为实心via。Upper/lower Tolerance:上下公差,设置为5%,也就是压降允许的范围。电流密度计算公式:J=I/A(J为电流密度,I为电流,A为横截面积)

weixin_54787054的博客 697

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1904

使用CImageList控件

 图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。    (一)图像控制的对象结构   

Civet148的专栏 1331

高精度导航 | RTK:2025年高精度导航算法综述,包括:原理,数据,公式,完整代码,开源代码链接

中国科学院国家授时中心的最新研究表明,PPP-AR/PPP-RTK增强算法使时间传递链路的稳定性提升超过30%,模糊度固定成功率高达93.57%,首次固定时间缩短至20分钟内。当这一愿景实现,人类社会的生产效率和资源利用率将迎来革命性提升,高精度定位将成为像电力、互联网一样的基础服务,深刻重塑我们的生活方式和文明形态。PPP-RTK作为GNSS定位领域的最前沿技术,成功融合了精密单点定位(PPP)和实时动态定位(RTK)的双重优势。,实现在无GNSS信号环境下(如隧道、地下停车场)的连续厘米级定位。

尘世冰封的专栏 1607

CImageList用法介绍

图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。 (一)图像控制的对象结构1

haoyuenan的专栏 5406

【部署优化篇三】《DeepSeek边缘计算实战:把目标检测模型塞进树莓派,让AI在巴掌大的设备上“开天眼“》

谁说只有超级计算机才能跑AI?今天咱们就要在树莓派上玩转DeepSeek目标检测,让这个巴掌大的小盒子变成会‘看’世界的智能终端!本文手把手教你从零开始,把最潮的目标检测模型塞进树莓派。全程高能预警,建议准备好你的树莓派4B/5和散热风扇,咱们这就开启边缘计算的魔法之旅!

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1306

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CImageList

图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用Windows32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。 (一)图像控制的对象结构  1、图像控

armman的专栏 753

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CImageList的使用简介

图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。 一、 图像控制的对象结构 1 图像

leaf6094189的专栏 572

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC常用控件用法之图像列表控制Image List

图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用 WINDOWS32位应用程序接口函数 API 来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在 WINDOWS95 及以后版本才能实现。2.1 图像控制的对象

2472

VC通用控件编程之CImageList控件

 图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。   (一)图像控制的对象结构  

fqli1610的专栏 556

CImageList用法介绍 (zz)

图像列表控制(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,图像列表通常由大图标或位图构成,其中包含透明位图模式。可以利用WINDOWS32位应用程序接口函数API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像等操作。图像列表控制提供了控制图像列表的基本方法,这些方法在WINDOWS95及以后版本才能实现。 (一)图像控制的对象结构 ...

weixin_30760895的博客 482
上一篇: SetSel();ReplaceSel();的详细用法
下一篇: 系统托盘Shell_NotifyIcon 函数
heary29
博客等级 码龄12年 37粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值