图像列表组件(TImageList)
TImageList 组件是一组同样尺寸的图像列表,每一个图像由它的Index值查询。
1.TImageList组件的典型用法
图形列表用于建立和管理大量的图像,主要是配合菜单或者工具栏按钮的使用。图像列表中的所有图像的出场必须想通,每一个图像都有一个相异的序号。为什么要使用图像列表呢?以树状视图为例,如果没有图像列表,就要给每一个节点逐个附上一个或多个图标。这样可能要编写很胀的程序代码,儿且要维护大量的图标也是相当费劲的,有了图像列表就简单多了,维护图标的工作和程序分开,只需要制定一个图像立标,然后在代码中指定锁使用的图标在图像列表中的序号。
(1)在设计期建立图像列表
图像列表是通过TImageList组件实现的,要建立图像列表一般在设计期进行。搜西安,要吧TImageList组件放到Form上,然后再逐个组件上单击鼠标右键,在弹出的菜单中选择‘ImageList Editor’命令,Delphi将打开图像列表编辑器,

当建立一个新的图像列表时,’Images’框是空的。单击‘Add’按钮,可以指定一个要加到图像列表中的图像文件。这个图像将出现在‘Images’框内,图像列表只支持,bmp和.ico 两种格式的图像,图像尺寸一般设置为16*16或者32*32像素
要删除图像列表中的图像,首先要在‘Images’框内悬着一个图像,然后点击删除按钮。点击clear按钮把所有图像清空
在Options框内,可以选择是否要修建,伸展或居中加到图像列表中的图像。
(2)在运行期动态建立图像列表
一般情况下不需要在运行期对图像列表进行操作。如果要动态建立图像列表,可以参考下面的程序示例代码:
procedure TForm1.Button1Click(Seder:TObject);
const
MyPath=’c:\program files\borland\delphi7\images\icons\’;
var
SearchRec: TsearChRec;
begin
Imagelist.creatSize(6,16);
if FindFirst(MyPath + ‘.bmp’,faAnyFile,searchrec)=0 then
begin
while FindNext(SearchRec)=0 do
ImageList1.FileLoad(rtBitmap.MyPath + SearchRec.Name,clNone);
FindClose(Searchrec);
end;
2.TimageList组件的重要属性
| BkColor | 此属性用于设置图像的背景颜色 |
| BlendColor | 此属性用于设置图形的前景颜色 |
| Count | 此属性用于返回图像列表中图像的个数 |
| DrawingStyle | 此属性用于设置图形显示的风格 |
| Handle | 此属性用于返回图像列表的句柄 |
| Height | 此属性用于设置图形的高度 |
| Width | 此属性用于设置图像的宽度 |
| ImageType | 此属性用于设置图形的类型 |
| Masked | 图形列表中允许有透明的图形 |
下面介绍程序中TI妈个Listzujian的常用属性。
(1)BkColor 属性
此属性用于设置图形题的背景颜色,列入可以将BkColor属性设置为引用图形的组建的前景色,这样图形现就就如同透明一样
(2)DrawingStyle属性
此属性用于设置图形显示的风格,他有如下4个可选值。
dsFocused 表示当前图像有输入焦点。
dsSelected 表示当前图像被选择
dsNormal 表示当前图像处于通常状态。
dsTransparent 表示当前图像是透明的
(3)Height 属性和Width 属性
这连个属性用来指定图形的高度和宽度。列入喜爱菜单中引用的图像进场将这个连个值设置为16(默认值),而在工具栏中是用时可以将这个连个属性设置为32,这样就可以是在工具栏中显示的图像比较大。当然这个两个值可以根据需要去不同的值。
(4)ImageType属性
此属性用于设置图像的类型,它有如下两个可选项
itImage 表示普通的图像
itmask 表示画的是图像的掩码
3.TImageList组件的重要方法
| add | 此方法想图像列表中加入一个图像及其掩码,并返回位图在图像列表中的索引号 |
| AddIcon | 此方法想图像列表中加入一个图标,并返回图标在图像列表中的索引号 |
| AddImages | 此方法用于把另一个TImageList组件的图像加到图像列表中 |
| Addmasked | 此方法向图像列表中加入一个图像 |
| Assign | 此方法用Source参数指定的另一个图像列表取代自己 |
| Clear | 清空图像列表中的所有图像 |
| CreateSize | 创建一个图像列表,并指定图像的高度和宽度 |
| Delete | 此方法用于删除图像列表中的一个图像 |
| Draw | 此方法吧图像列表中的指定序号的图像画到指定画布的指定的位置 |
| DrawOverLay | 此方法用于把图像列表中的指定序号的图像画到指定画布的指定位置 |
| FileLoad | 此方法用于从一个资源文件中读取图像到图像列表中 |
| GetBitmap | 此方法吧指定序号的图像写到Image参数指定的位图中 |
| GetIcon | 此方法是把指定序号的图像写到Image参数指定的图像中 |
| Insert | 此方法吧一个图标查到图像列表的指定序号之后 |
| InserIcon | 此方法是吧一个图标查到图像列表的指定序号之后 |
| InsertMasked | 此方法吧一个位图查到指定的序号之后 |
| Move | 此方法用于把图像列表中的一个图像移动到另一个位置 |
| Replace | 此方法用于一个新的位图机器掩码代替图像列表中指定序号的图像 |
| ReplanceIcon | 此方法用一个新的图标替换图像列表中指定序号的图像 |
| TeplaceMasked | 此方法用一个新的位图代替图像列表中指定序号的图像 |
| ResourceLoad | 此方法从一个指定的资源文件中取出指定类型的图像到图像列表中 |
下面介绍程序中TImageList组件常用的方法。
(1)Add方法
此方法向图像列表中加入一个位图节气掩码,并返回位图在图形列表中的索引号。他有两个烈性为TBitMap类型的参数
Image 加入的位图
Mask 位图的掩码
(2)AddIcon 方法
此方法想图像列表中加入一个图标,并返回图标在图像列表中的索引号。AddIcon方法也Add方法类似,只是AddIcon方法中的参数Image是TIcon类型。下面的代码就是想图像列表组件中调价一个图标的例子:
var
icon:TIcon;
i: Integer;
begin
Icon:=Ticon.create;
Icon.LoadFromFile(‘c:\Mgr.ico’) //为Icon调入一个图标文件
I:= Imagelist1.addicon(Icon);
Icon.Free
end;
(3)AddImages 方法
此方法用于把另一个TImageList组件的图像加到图像列表中。AddImages方法中的Value参数是TCusTomImageList类型,例如用下面的代码可以将量个TImageList组件的图像合并到一个图像列表中。
ImageList1.Addimages(Imagelist2); //将ImageList2d图像添加到ImageList1中
(4)Assign 方法
此方法用TPersistent类型的Source参数指定另一个图像列表取代自己,Assign方法的使用参考AddImages方法的实例代码
(5)Clear 方法
此方法用于清空图像列表中的所有图像。例如ImageList1图像列表中的所有图像,可以用下面的代码实现“
ImageList1.Clear;
(6)CreatSize方法
此方法实际是TImageList的构造。用于创建一个图像列表,并指定图像列表中图像的高度和宽度。GreateSize方法中有如下两个参数
AWidth 图像的宽度
AHeight 图像的高度
在一个已经引用图像的列表中,可以利用此方法重新指定图像的宽度和高度
(7)Draw方法
此方法吧图像列表中的指定序号的图像画到指定画布的指定位置。Draw方法设定了如下4个参数。
Canvas 指定的画布
x :指定的位置x坐标
y : 指定的位置y坐标
Enabled 指定图像的显示状态,True表示正常显示,False表示灰度显示。
例如下面的代码是姜ImageList1组件索引为2的图像画到Form1窗体(50,50)坐标处
ImageList.Draw(Form1.Canvs,50,50,2,True);
(8)DrawOverlay 方法
此方法用于把图像列表中指定序号的图像滑到指定画布的指定位置。DrawOverlay 过程设定了如下6个参数
Canvas 加入位图
x :指定的位置x坐标
y : 指定的位置y坐标
……..
图像列表组件(TImageList)的更多相关文章
- 列表组件抽象(2)-listViewBase说明
这是我写的关于列表组件的第2篇博客.前面的相关文章有: 1. 列表组件抽象(1)-概述 listViewBase是列表组件所有文件中最核心的一个,它抽象了所有列表的公共逻辑,将来如果有必要添加其它公共 ...
- 可展开的列表组件——ExpandableListView深入解析
可展开的列表组件--ExpandableListView深入解析 一.知识点 1.ExpandableListView常用XML属性 2.ExpandableListView继承BaseExpanda ...
- 使用Matrix控制图像或组件变换的步骤
1.获取Matrix对象,该Matrix对象既可新创建,也可直接获取其他对象内封装的Matrix(例如Transformation对象内部) 2.调用Matrix的方法进行平移.旋转.缩放.倾斜等. ...
- Bootstrap学习之路(3)---列表组件
列表是几乎所有网站都会用到的一个组件,正好bootstrap也给我们提供了这个组件的样式,下面我给大家简单介绍一下bootstrap中的列表组件的用法! 首先,重提一下引用bootstrap的核心文件 ...
- Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作
1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V: view (显示的视图) C: controller 控制器 入门案例: acit ...
- h.264参考图像列表、解码图像缓存
1.参考图像列表(reference picture list) 一般来说,h.264会把需要编码的图像分为三种类型:I.P.B,其中的B.P类型的图像由于采用了帧间编码的这种编码方式,而帧间编码又是 ...
- bootstrap 之 列表组件使用
列表是几乎所有网站都会用到的一个组件,正好bootstrap也给我们提供了这个组件的样式,下面我给大家简单介绍一下bootstrap中的列表组件的用法! 首先,重提一下引用bootstrap的核心文件 ...
- React-Native新列表组件FlatList和SectionList学习 | | 联动列表实现
React-Native在0.43推出了两款新的列表组件:FlatList(高性能的简单列表组件)和SectionList(高性能的分组列表组件). 从官方上它们都支持常用的以下功能: 完全跨平台. ...
- Vue列表组件与弹窗组件示例
列表组件 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <me ...
- Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件
UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...
随机推荐
- Liunx运维(一)-命令行
一.命令行的开启与推出 1.exit 2.logout 3.ctrl+d 二.命令行提示符 1.#root用户 2.$普通用户 3.~当前用户所在的路径 4.全局配置文件: /etc/profil ...
- 线性代数 · 矩阵 · Matlab | Cholesky 分解代码实现
(搬运外网的代码,非原创:原网址 ) (其实是专业课作业,但感觉国内博客没有合适的代码实现,所以就搬运到自己博客了) 背景 - Cholesky 分解: 若 A 为 n 阶实对称正定矩阵,则存在非奇异 ...
- 【一文秒懂】Ftrace系统调试工具使用终极指南
[一文秒懂]Ftrace系统调试工具使用终极指南 1.Ftrace是什么 Ftrace是Function Trace的简写,由 Steven Rostedt 开发的,从 2008 年发布的内核 2.6 ...
- Go-性能测试-benchmark
- 今天是个好日子,TaxCore(POS软件)备案指北
POS软件是什么?你好意思吗,还在用老掉牙的Winform. 关于POS 销售终端--POS(point of sale)是一种多功能终端,把它安装在信用卡的特约商户和受理网点中与计算机联成网络,就能 ...
- [转帖]查询 HTTPS 网站 TLS 版本
参考 检查网站的TLS版本 – wentao's blog Linux curl 命令详解 - 腾讯云开发者社区-腾讯云 TLS 版本查询_天泽岁月的博客-CSDN博客_查看tls版本 使用 Open ...
- MYSQL varchar和nvarchar一些学习
MYSQL varchar和nvarchar一些学习 背景 先试用 utfmb3的格式进行一下简单验证 注意脚本都是一样的. create database zhaobsh ; use zhaobsh ...
- Oracle session的sid与serial的简单学习
Oracle session的sid与serial的简单学习 ITPUB vage的说法 这样说吧,Oracle允许的会话数(或者说连接数)是固定的,比如是3000个.假设每个会话要占1K字节,哪一共 ...
- [转帖]如何利用wrarp测试oss性能?
https://zhuanlan.zhihu.com/p/529735003 前言 我们利用mino与ceph rgw搭建好的oss经过多层网络转发,传输速度必定有所折损,这个时候我们使用wrap ...
- [转帖]一文读懂 K8s 持久化存储流程
https://zhuanlan.zhihu.com/p/128552232 作者 | 孙志恒(惠志) 阿里巴巴开发工程师 导读:众所周知,K8s 的持久化存储(Persistent Storage) ...