![]() |
Extraktion von Icons
Hallo Leute,
ich brauche gerade ein paar Icons (XP-Style) für eine meiner Anwendungen und wollte dabei auf die mit Windows gelieferten zurückgreifen. Nun liegen diese ja nicht als ICO-Files vor, sondern sind in Anwendungen und DLLs eingebettet - man muss sie folglich extrahieren. Ich mache das so:
Code:
Läd man das von obiger Funktion zurückgegebene Icon in ein Image, z.B.
uses ShellAPI...
... function IconFromFile(S : string): TIcon; var MyIcon : TIcon; SHFileInfo: TSHFileInfo; begin MyIcon := TIcon.Create; SHGetFileInfo(pchar(S), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_ICON); MyIcon.Handle:= SHFileInfo.hIcon; Result:=MyIcon; end;
Code:
dann erhält man das:
Image1.Picture.Icon:=IconFromFile('C:\WINDOWS\system32\sndrec32.exe');
![]() Nun wäre es unsauber, das Icon zur Laufzeit zu extrahieren und darzustellen. Wer weiß schon ob es die Quelldatei in zukünftigen Windows-Versionen noch gibt oder unter welchem Pfad sie abgelegt ist? Folglich brauche ich das ICO-File. Speichert man das von obiger Funktion gelieferte Icon
Code:
dann sieht das Resultat allerdings so aus:
MyIcon := IconFromFile('C:\WINDOWS\system32\sndrec32.exe');
MyIcon.SaveToFile('C:\icon.ico'); ![]() Ich habe auch einige Icon Extraktions-Tools ausprobiert und leider scheinen sie ähnliche Ergebnisse zu liefern. ---> Frage: Wie extrahiert man ein Icon richtig (d.h. als 1:1 Kopie)? Alternativ wäre ich auch dankbar für Hinweise bzgl. Freeware Icon-Sammlungen (XP-Style). Momentan suche ich v.a. Icons aus dem Audio-Bereich (Mikrofone, Lautsprecher etc.). Danke für Eure Hilfe! |
Re: Extraktion von Icons
Die Farbtiefe scheint nicht zu stimmen.
Desweiteren darfst du keine Windows Icons extrahieren und mit deiner Anwendung ausliefern, da du damit eine Urheberrechtsverletzung begehst. |
Re: Extraktion von Icons
Ich hab mich in letzter Zeit etwas nach freien Icon-Sammlungen umgeschaut, leider gibt es nicht wirklich viele kostenlose (man muss schon so 99-129$ rechnen für was vernünftiges), aber ein paar hab ich doch gefunden.
Einerseits bekommst du nämlich für die kostenlose Registrierung von Visual C# Express ein Icon-Pack. Nichts großes zwar, aber für den Anfang ganz ok. 16x16-Icons: ![]() ![]() Ansonsten, insbesondere wenn du ganz bestimmte Icons brauchst, sind deine Chancen am besten, dir dafür die entsprechenden Bilder herauszusuchen und mit einem Icon-Editor in ein Windows-Icon umzuwandeln. ![]() |
Re: Extraktion von Icons
Die Silk Icons sind sehr brauchbar. :thumb:
|
Re: Extraktion von Icons
![]() ![]() ![]() ![]() ![]() :thumb: Hatten wir aber auch schon ziemlich oft im Forum... Auch Google spuckt diese Seiten ziemlich früh aus... mfg, Dj_Base |
Re: Extraktion von Icons
Hi
Zwei Sachen: 1.: Man darf die Windows Icons nicht direkt einbinden 2.: Der Verlust der Farbtiefe kommt von der TIcon Klasse, die nur mit 16 Bit Farben umgehen kann. Es gibt aber extra Units, die Icons mit 32 Bit speichern können. Z.B. die Unit IconsToFile. Florian |
Re: Extraktion von Icons
Zitat:
es gibt aber sowieso ![]() |
Re: Extraktion von Icons
Ich meinte ja, dass man die Icons nicht extrahieren darf und dann z.B. in einer ImageList mitliefert. Erlaubt ist das Extrahieren in den Speicher (also beispielsweise in ein TIcon) ohne Speichern des Icons.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz