我在我的应用程序中使用了一组大约 100 个图标,这些是使用固定的参考数字访问的,并且这些数字也可供用户选择一个图标。所需的三种分辨率是 16x16、32x32 和 48x48。这些分辨率中的每一个都保存在 TPngImageList 中,我使用 TDataModule 创建了一个“图标库”,而不是包含这三个图像列表 (TArtImageLibraryImageLists)。当需要任何图像列表时,一个简单的“首次使用时创建”方法会实例化此 TDataModule。任何需要访问图像列表的控件的 LargeImages 或类似属性只需调用所需的分辨率函数即可。
问题是程序启动时的加载时间,在快速机器上约为 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;