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坐标
……..
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/4713633.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人