Ładowanie kilku ikon różnej wielkości do exe w Delphi 2007

0

Witam.
Tak jak w temacie. Jak zabrać się do wczytywania kilku ikon rożnej wielkości do exe w Delphi 2007. Czytałem Kompendium Rozdz. 9 o wczytywaniu ikonek z zasobu ale to chyba dotyczy Delphi 7 bo w Delphi 2007 nie widzę tego Image edytora do tworzenia zasobów. Do tej pory nie było mi to potrzebne a teraz chciał nie chciał ale musiał.
Mam ikony 16x16, 32x32 ... 256x256.
Project -> Options -> Application -> Load icon przyjmuje tylko jedną ikonę chyba, że o czymś nie wiem albo coś przeoczyłem ...

2

Jak zabrać się do wczytywania kilku ikon rożnej wielkości do exe w Delphi 2007.

A możesz jaśniej?

Czytałem Kompendium Rozdz. 9 o wczytywaniu ikonek z zasobu ale to chyba dotyczy Delphi 7 bo w Delphi 2007 nie widzę tego Image edytora do tworzenia zasobów.

Do tworzenia plików .res wykorzystywany jest program brcc32.exe; Tworzysz plik .rc, w którym zapisujesz w odpowiedni sposób jakie pliki mają się znaleźć w tym wyjściowym pliku zasobu i "kompilujesz" go w brcc32.exe, który tworzy plik .res - gotowy do przyłaczenia dyrektywą $R; Do tego poczytaj o typach zasobów, bo jest ich trochę;

Project -> Options -> Application -> Load icon przyjmuje tylko jedną ikonę chyba, że o czymś nie wiem albo coś przeoczyłem ...

Tą opcją ustawiasz ikonę dla pliku wykonywalnego aplikacji, więc trudno żebyś mógł tam upchać 20 ikon; Plik wykonywalny po kompilacji będzie jeden, więc i ikona projektu jest jedna; Jak chcesz coś wpakować do zasobów (bez względu co i ile) to stwórz tak jak wyżej napisałem pliki .res, bo one podczas kompilacji będą dołączone do pliku exe programu.

3

Jak chcesz aby ikonka programu (ew. skrót) wyglądał ładnie na W7 i nowszych przy dużych ikonach to tworzysz jeden plik ICO z kilkoma ikonami w środku, każda innej wielkości. Potrafi to np darmowy IcoFX

0

Skorzystam z obu podpowiedzi. fakt niejasno .. chodzi o to żeby w zależności od wielkości exe czy miejsca wyświetlała się odpowiedniej rozdzielczości ikona WinXP/Win7/Win8. Na razie dzięki. Trochę już na konkretny temat w sieci jest więc będzie gdzie doczytać, w razie czego odświeżę temat.

2

Jeśli o to chodzi, to sugeruj się tym, o czym napisał @abrakadaber;

Na XP trzeba było stworzyć jeden plik .ico, ale z kilkoma grafikami w środku dla różnych widoków eksplorera - rozdzielczości 16x16 (widok listy lub szczegółów), 32x32 (widok ikon) i 48x48 (widok kafelek, również na pulpicie); Dla nowszych systemów można mieć też większe grafiki, maksymalna obsługiwana to najpewniej 128x128, a przynajmniej taką maksymalną posiada standardowa ikona Lazarusa w nowych projektach, więc pewnie większe nie są używane w Windows Vista, 7 i 8.

2

Tak jak koledzy napisali, w jednym pliku .ico mieści się wiele obrazków, o różnych rozdzielczościach.

Maksymalny rozmiar ikony obsługiwanej przez Windows XP to 256x256.
Taka ikona jednak sporo zajmuje(około 250 kB), dlatego od Visty wzwyż ikona 256x256 może być skompresowana algorytmem PNG. Wtedy jednak XP jej nie odczyta (tylko tego jednego wariantu, nie będzie problemu z mniejszymi umieszczonymi w tym samym pliku .ico).

Podczas tworzenia pliku .ico najlepiej wykonać wszystkie „tradycyjne” rozmiary: 16x16, 24x24, 32x32, 48x48.
Oprócz rozmiaru jest kwestia głębi kolorów: 32-bitowa (24-bitowa z kanałem alfa), 24-bitowa, 256 kolorów, 16 kolorów, 2 kolory.
Przynajmniej dla dwóch podstawowych rozmiarów 16x16 i 32x32 wypadałoby zrobić wersje 256 i 16 kolorów.

Wszystko o czym napisałem potrafi zrobić IcoFX.

chodzi o to żeby w zależności od wielkości exe czy miejsca wyświetlała się odpowiedniej rozdzielczości ikona
Windows automatycznie dobiera, którą wybrać z dostępnych. Jeśli brakuje akurat dokładnie takiej jak potrzeba to przeskaluje inną, z mizernym zwykle skutkiem.

Im lepiej dopracujesz ikonę (technicznie, bo artystycznie to swoją drogą), tym bardziej profesjonalnie będzie twój program wyglądał. Choćby po samej ikonce.

0

fakt ładnie wygląda ikonka jak jest ładna i dopracowana, ale ponieważ widzę to trochę więcej zabawy dla niemającego wprawy to ja to zostawię na koniec. trochę mnie martwię te różnice miedzy systemami - może nie będzie tak źle, się zrobi.
Dziękuję wszystkim za wyczerpujące informacje.

Edit.
Można by to dołączyć do artykułu: zapewne nie jednej osobie życie uratuje:) bo z Newbie trafi zapewne do kosza.
Zasoby w EXE

0

Witam ponownie
zrobiłem plik Tom16ICO.RES.rc z ikonek od 16x16(Tom6.ico) do 256x256(Tom1.ico)

Tom1 RT_ICON "C:\..\Tom1.ico"
Tom2 RT_ICON "C:\..\Tom2.ico"
Tom3 RT_ICON "C:\..\Tom3.ico"
Tom4 RT_ICON "C:\..\Tom4.ico"
Tom5 RT_ICON "C:\..\Tom5.ico"
Tom6 RT_ICON "C:\..\Tom6.ico"
 

dodałem go:

implementation

{$R Tom16ICO.RES}  
{$R *.dfm} 

ikonę do niebieskiego paska załadowałem 16x16, exe urósł o jakieś 361KB, taki skompilowany wyrzuciłem na pulpit i ikona wygląda jak rozciągnięta 16x16 czyli system nie widzi większych ikonek. Coś przeoczyłem tylko co?

1

zrobiłem plik Tom16ICO**.RES.rc** [..]

W nazwie pliku .rc nie musi być słówka RES, więc nazwa Twojego pliku powinna być Tom16ICO.rc, a po kompilacji powinien zostać utworzony plik Tom16ICO.res;

Tom1 RT_ICON "C:\..\Tom1.ico"

Co robią w ścieżce te dwie kropki?

ikonę do niebieskiego paska załadowałem 16x16, exe urósł o jakieś 361KB, taki skompilowany wyrzuciłem na pulpit i ikona wygląda jak rozciągnięta 16x16 czyli system nie widzi większych ikonek.

Wiesz, że bez kodu i sensowniejszego wyjaśnienia raczej nikt nie pomoże; Wrzuć kod ładujący ikonę i opisz nieco dokładniej do jakiego "niebieskiego paska" załadowałeś ikonę.

0

zrobiłem plik Tom16ICO.RES.rc
ok literówka poprawiłem

Tom1 RT_ICON "C:\..\Tom1.ico"

w pliku jest pełna ścieżka to tylko do artykułu wykropkowałem bo ścieżka była długa

 implementation

{$R Tom16ICO.res}  
{$R *.dfm}

to właśnie cały kod który dodałem do obsługi RES , bo nie używam ikon w kodzie tylko system ma sobie sam to znaleźć, pewnie trzeba mu jeszcze jakoś coś pokazać ale pytanie jak ..

ikonę 16x16 załadowałem poprzez Projekt \ Options.. \ Aplication \ Load icon

2

@Integers - przecież ja kompletnie nic nie rozumiem... Jak system ma sobie sam poradzić z tymi zasobami?

Domyślam się, że potrzebujesz zrobić jednen plik .ico, który w sobie zawierać będzie kilka takich samych ikon, tyle że o różnych rozmiarach; Wytłumaczone masz wcześniej, że musisz skorzystać z odpowiedniego oprogramowania do stworzenia takiego pliku;

Dla przykładu podam program ArtIcons, w którym możesz takie coś zrobić; Poniżej zrzut ekranu z programu, w którym otwarty jest przykładowy plik ikony:

articons.png

Jak widzisz w liście po prawej stronie pokazane są wszystkie grafiki zawarte w jednym pliku - chart_01.ico;

Tak przygotowaną ikonę ładujesz do projektu w jego opcjach i system już sam będzie wybierał odpowiednią grafikę do wyświetlenia np. na pulpicie czy w oknie eksploratora Windows; Nie trzeba tego ręcznie wrzucać do zasobów programu.

0

Zakładałem ze to są dwa równoważne sposoby, ok sorki .. i dzięki za ciepliwość

2

Ehh, @Integers - mógłbyś wykazać się w końcu swoją inteligencją... Ikona nie posiada żadnych parametrów - to nie są parametry, tylko wbudowane w jeden plik kilka grafik; Jak nie możesz zakapować to wyobraź sobie, że plik .ico to takie archiwum bez kompresji, które w sobie zawiera kilka grafik, najczęściej o różnych rozmiarach; Nic nie stoi na przeszkodzie, aby w jednym pliku .ico było 100 grafik z taką samą rozdzielczością;

Przykład - ukradłem z serwisu plik z logiem 4programmers (żartuję, link do grafik - Nasze logo):

4programmers.png

Otworzyłem ten plik .png w programie ArtIcons i zapisałem jako plik .ico:

step1.png

Jak widać grafika jest póki co jedna, więc na liście po prawej jest tylko jedna pozycja; Teraz korzystam z opcji tworzenia nowej grafiki - o mniejszych rozmiarach:

step2.png

i podaję rozmiar 64x64 dla nowej grafiki; Wciskam przycisk Ok i tworzy mi się nowa grafika o rozmiarze 64x64, której grafika zostaje pobrana z tej istniejącej i odpowiednio przeskalowana; W wyniku tej operacji mam już dwie grafiki w jednym pliku .ico:

step3.png

i w ten sposób tworzę grafiki o wszystkich interesujących mnie rozmiarach; Po utworzeniu ich wszystkich lista po prawej stronie zawiera wiele pozycji:

step4.png

Zapisuję wprowadzone zmiany i sprawdzam jak przedstawia się moja ikona np. w Eksploratorze Windows w różnych widokach:

1. Widok kafelek:

48x48.png

2. Widok ikon:

32.x32.png

3. Widok listy lub szczegółów:

16x16.png

Jeśli teraz wybiorę tą ikonę jako ikona mojej aplikacji (w ustawieniach projektu), to właśnie tak samo, jak podana na zrzutach wyżej ikona w eksploratorze będzie wyglądać plik wykonywalny mojego programu;

To tyle, a jeśli każda z grafik w jednym pliku .ico ma być inna (nie tworzona na bazie tej największej) to oczywiście można to bez problemu zrobić zarówno w ArtIcons, jak i każdym innym programie do tworzenia plików ikon.

0

Dzięki. Wiem, że to nie wygląda najlepiej. Udało mi się kiedyś zmęczyć rozpoznawanie obrazów i głosu w pliku Wav poprzez modyfikacje sieci neuronowej ale tu jakoś mur i ni w ząb. Zresztą jak się nie czuje danego tematu to ciężko coś wydumać. Dziękuję za "łopatologiczny" opis, pewnie nie jednej osobie się przyda bo temat nie jest zbyt często poruszany.

0

Na pewno warto się tego nauczyć, dlatego że każdej aplikacji, jaką się stworzy pasuje nadać jakąś ikonę, więc zamiast marnować czas prosząc grafików samemu łatwo taką zrobić; Wystarczy mieć jakąś grafikę podstawową, którą wystarczy załadować do takiego lub podobnego programu i tylko ją powielić z różnymi rozmiarami i zapisać; To zajmuje tylko kilka minut.

1 użytkowników online, w tym zalogowanych: 0, gości: 1