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)的更多相关文章

  1. 列表组件抽象(2)-listViewBase说明

    这是我写的关于列表组件的第2篇博客.前面的相关文章有: 1. 列表组件抽象(1)-概述 listViewBase是列表组件所有文件中最核心的一个,它抽象了所有列表的公共逻辑,将来如果有必要添加其它公共 ...

  2. 可展开的列表组件——ExpandableListView深入解析

    可展开的列表组件--ExpandableListView深入解析 一.知识点 1.ExpandableListView常用XML属性 2.ExpandableListView继承BaseExpanda ...

  3. 使用Matrix控制图像或组件变换的步骤

    1.获取Matrix对象,该Matrix对象既可新创建,也可直接获取其他对象内封装的Matrix(例如Transformation对象内部) 2.调用Matrix的方法进行平移.旋转.缩放.倾斜等. ...

  4. Bootstrap学习之路(3)---列表组件

    列表是几乎所有网站都会用到的一个组件,正好bootstrap也给我们提供了这个组件的样式,下面我给大家简单介绍一下bootstrap中的列表组件的用法! 首先,重提一下引用bootstrap的核心文件 ...

  5. Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作

    1.ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: acit ...

  6. h.264参考图像列表、解码图像缓存

    1.参考图像列表(reference picture list) 一般来说,h.264会把需要编码的图像分为三种类型:I.P.B,其中的B.P类型的图像由于采用了帧间编码的这种编码方式,而帧间编码又是 ...

  7. bootstrap 之 列表组件使用

    列表是几乎所有网站都会用到的一个组件,正好bootstrap也给我们提供了这个组件的样式,下面我给大家简单介绍一下bootstrap中的列表组件的用法! 首先,重提一下引用bootstrap的核心文件 ...

  8. React-Native新列表组件FlatList和SectionList学习 | | 联动列表实现

    React-Native在0.43推出了两款新的列表组件:FlatList(高性能的简单列表组件)和SectionList(高性能的分组列表组件). 从官方上它们都支持常用的以下功能: 完全跨平台. ...

  9. Vue列表组件与弹窗组件示例

    列表组件 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <me ...

  10. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

随机推荐

  1. vue学习笔记 五、创建子组件实例

    系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...

  2. echarts网络拓扑图动态流程图

    https://aixiaodou.blog.csdn.net/article/details/93712083?utm_medium=distribute.pc_relevant.none-task ...

  3. nextTick用法

  4. SpringCloud Alibaba Security安全认证

    一. Security配置(auth认证中心) 代码地址 https://github.com/typ1805/blog-cloud Spring Security是一套安全框架,可以基于RBAC(基 ...

  5. shell脚本(15)-sed命令

    文档目录一.sed-简介1.shell对文件操作介绍2.sed命令简介3.sed语法: sed [options] '{command}{flags}' [filename]二.sed-命令选项( - ...

  6. 每天学五分钟 Liunx 0111 | 服务篇:进程权限

    程序存储在硬盘中,需要执行的时候被加载到内存里,内存中的程序以进程的方式运行,进程会根据程序的内容去做读写文件,执行指令等操作. 文件/指令等都有自己的执行权限,符合权限的才能被执行.相应的,进程也需 ...

  7. MySQL 查询索引失效及如何进行索引优化

    本文为博主原创,未经允许不得转载: 我们都知道创建索引的目的是快速从整体集合中选择性地读取满足条件的一部分集合.mysql中一张表是可以支持多个索引的.但是,你写sql语句的时候,并没有主动指定使用哪 ...

  8. STM32F429 实测基本数据类型占用空间

    实测代码 1 void CalculateDataTypeSize(void) 2 { 3 printf("sizeof(char} = %u\r\n", sizeof(char) ...

  9. crypto常用算法

    欧几里得算法(辗转相除法) def gcd(a, b): if b == 0: return a else: return gcd(b, a % b) 扩展欧几里得算法 def ext_euclid( ...

  10. 如何部署两个JMS网关,形成双机热备

    大家使用JMS的过程中,可能会留意到,不管是微服务在注册时,还是RemoteClient构造时,所指向的网关都是一个NetAddress数组,之所以网关地址是多个,而不是一个,那是因为网关是一个双击热 ...