我在我的應用程序中使用了一組約100個圖標,這些都是使用固定參考號進行訪問的,這些數字也可供用戶選擇圖標。所需的三種分辨率是16x16,32x32和48x48。這些解決方案中的每一個都保存在TPngImageList中,並且使用TDataModule創建了一個「圖標庫」,而不是包含這三個圖像列表(TArtImageLibraryImageLists)。當需要任何圖像列表時,一個簡單的「首次使用時創建」方法會實例化此TDataModule。任何需要訪問圖像列表的控件的LargeImages或somesuch屬性都可以通過調用所需的分辨率函數來設置。如何提高德爾福TPngImageList(或TImageList)的加載時間
問題是程序啓動時的加載時間,在快速機器上約爲1秒。顯然,最糟糕的罪魁禍首是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;
您似乎在啓動時需要數據模塊,但啓動時是否需要48x48映像? – 2010-10-28 09:56:25