首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高Delphi TPngImageList (或TImageList)的加载时间

如何提高Delphi TPngImageList (或TImageList)的加载时间
EN

Stack Overflow用户
提问于 2010-10-28 09:24:05
回答 1查看 804关注 0票数 1

我在我的应用程序中使用了一组大约100个图标,这些图标是使用固定参考号访问的,这些数字也可以供用户选择一个图标。所需的三种决议是16x16、32x32和48x48。每个分辨率都保存在TPngImageList中,我使用TDataModule创建了一个“图标库”,其中包含了这三个图像列表(TArtImageLibraryImageLists)。一个简单的'create‘方法在需要它的图像列表时实例化这个TDataModule。任何需要访问图像列表的控件的LargeImages或somesuch属性都是通过调用所需的解析函数来设置的。

问题是程序启动时的加载时间,在一台快速机器上大约是1s。显然,最糟糕的罪魁祸首是48x48映像列表,但我想知道是否有更好的加载机制(例如使用资源文件?)这会加速事情的发展。或者有什么方法可以重新格式化图像列表?我在运行时仍然需要一个TImageList,例如我的TreeView等等。

谢谢布莱恩。

代码语言:javascript
复制
var
  FInstance : TArtImageLibraryImageLists;

function ArtImageLibraryImageLists : TArtImageLibraryImageLists;
begin
  If not Assigned( FInstance ) then
    FInstance := TArtImageLibraryImageLists.Create( nil );
  Result := FInstance;
end;


function ArtIconLibraryImageList16 : TImageList;
begin
  Result := ArtImageLibraryImageLists.ImageList16;
end;

function ArtIconLibraryImageList32 : TImageList;
begin
  Result := ArtImageLibraryImageLists.ImageList32;
end;

function ArtIconLibraryImageList48 : TImageList;
begin
  Result := ArtImageLibraryImageLists.ImageList48Shadow;
end;
EN

回答 1

Stack Overflow用户

发布于 2010-10-28 13:26:09

  1. 您说“一个简单的‘在第一次使用上创建’方法实例化了这个TDataModule",但接着说问题是启动时间。当实际创建数据模时?
  2. 您是否对应用程序进行了分析以确保图像列表是否加载了问题?如果问题实际上是图像列表,则需要pngs吗?如果它们是这样存储的,则需要对它们进行解码并添加到图像列表位图中。ImageList_LoadImage()可以一步加载位图。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4041452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档