我在我的应用程序中使用了一组大约100个图标,这些图标是使用固定参考号访问的,这些数字也可以供用户选择一个图标。所需的三种决议是16x16、32x32和48x48。每个分辨率都保存在TPngImageList中,我使用TDataModule创建了一个“图标库”,其中包含了这三个图像列表(TArtImageLibraryImageLists)。一个简单的'create‘方法在需要它的图像列表时实例化这个TDataModule。任何需要访问图像列表的控件的LargeImages或somesuch属性都是通过调用所需的解析函数来设置的。
问题是程序启动时的加载时间,在一台快速机器上大约是1s。显然,最糟糕的罪魁祸首是48x48映像列表,但我想知道是否有更好的加载机制(例如使用资源文件?)这会加速事情的发展。或者有什么方法可以重新格式化图像列表?我在运行时仍然需要一个TImageList,例如我的TreeView等等。
谢谢布莱恩。
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;发布于 2010-10-28 13:26:09
https://stackoverflow.com/questions/4041452
复制相似问题