В моем приложении используется около 100 иконок, доступ к которым осуществляется с помощью фиксированных номеров ссылок, и эти номера также доступны для выбора пользователем значка. Требуются три разрешения: 16x16, 32x32 и 48x48. Каждое из этих разрешений содержится в TPngImageList, и я создал «библиотеку значков» с использованием TDataModule, которая содержит эти три списка изображений (TArtImageLibraryImageLists). Простой метод «создать при первом использовании» создает экземпляр этого TDataModule, когда требуется любой из его списков изображений. Свойство LargeImages или somesuch любых элементов управления, которым требуется доступ к списку изображений, просто задается путем вызова требуемой функции разрешения.
Проблема заключается в времени загрузки программы при запуске, которое составляет около 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;