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. SIP没有摘机消息可以通话吗

    概述 SIP流程中,A路没有收到摘机的200 OK响应消息可以通话吗? 客户反馈的问题千奇百怪,公共互联网的问题同样百转千回,让你欲罢不能,头秃方休. 客户报故障,问题描述是这样的,我用号码A打给号码 ...

  2. Vue之使用elementUI的upload上传组件导入csv文件

    最近干活的时候有个需求,需要将csv文件导入到mysql数据库中,前后端框架用的springboot+Vue,组件用的elementUI,下面将分步骤记录实现过程. 1.导入按钮部分: <el- ...

  3. 【收集】C & C++

    序 链接 备注 1 C语言0长度数组(可变数组/柔性数组)详解_CHENG Jian的博客-CSDN博客_0数组   2 C 语言参考 | Microsoft Learn   3 C++ 语言参考 | ...

  4. spring——DI_依赖注入

    Spring的注入方式 Dependency Injection 概念 依赖注入(Dependency Injection) 依赖:指Bean对象的创建依赖于容器,Bean对象的依赖资源 注入:指Be ...

  5. Go-获取指定长度随机字符串

    // GetCode 获取一个随机用户唯一编号 func GetCode(codeLen int) string { // 1. 定义原始字符串 rawStr := "abcdefghijk ...

  6. Vue2.x项目整合ExceptionLess监控

    前言 一直以来我们都是用Sentry做项目监控,不过前段时间我们的Sentry坏掉了(我搞坏的) 但监控又是很有必要的,在sentry修好之前,我想先寻找一个临时的替代方案,同时发现网上关于Excep ...

  7. [转帖]CIDR

    什么是 CIDR? 无类别域间路由 (CIDR) 是一种 IP 地址分配方法,可提高互联网上的数据路由效率.每台连接到互联网的计算机.服务器和最终用户设备都有一个与之关联的唯一编号,称为 IP 地址. ...

  8. [转帖]RocksDB 简介

    https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview RocksDB 是由 Facebook 基于 LevelDB 开发的一款提供键值存储与 ...

  9. [转帖]金仓数据库KingbaseES V8R6 中unlogged表

    KingbaseESV8R6有一种表称为unlogged,在该表新建的索引也属于unlogged.和普通表的区别是,对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中.在数据库异常关机或 ...

  10. [转帖]Nginx动静分离详解以及配置

    https://developer.aliyun.com/article/885602?spm=a2c6h.24874632.expert-profile.314.7c46cfe9h5DxWK 简介: ...