J'utilise un ensemble d'environ 100 icônes dans mon application, celles-ci sont accessibles en utilisant des numéros de réfrence fixes et ces numéros sont également mis à la disposition de l'utilisateur pour choisir un icône. Les trois résolutions requises sont 16x16, 32x32 et 48x48. Chacune de ces résolutions est conservée dans un TPngImageList et j'ai créé une «bibliothèque d'icônes» en utilisant un TDataModule qui contient ces trois listes d'images (TArtImageLibraryImageLists). Une simple méthode 'créer à la première utilisation' instancie ce TDataModule lorsque l'une de ses listes d'images est requise. La propriété LargeImages ou une propriété de tout contrôle nécessitant un accès à une liste d'images est simplement définie en appelant la fonction de résolution requise.Comment améliorer le temps de chargement de Delphi TPngImageList (ou TImageList)
Le problème est le temps de chargement au démarrage du programme, qui est d'environ 1s sur une machine rapide. Évidemment, le pire coupable est la liste d'images 48x48 mais je me demande s'il existe un meilleur mécanisme de chargement (par exemple en utilisant un fichier de ressources?) Qui accélérera les choses. Ou y a-t-il un moyen de reformater les listes d'images? J'aurai toujours besoin d'un TImageList au moment de l'exécution, par exemple pour mes TreeView, etc.
Merci, Brian.
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;
Vous semblez avoir besoin du datamodule au démarrage mais avez-vous besoin des images 48x48 au démarrage? –