Autor Beitrag
phlux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Mi 09.10.02 10:52 
Hi!

Ich habe folgende kleine Prozedur geschrieben um mir die Icons einer Datei auf die festplatte speichern zu lassen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure GetIcon(FileName: String);
var
  LargeIcon,
  SmallIcon: TPicture;
  sIcon,
  lIcon: hIcon;

begin
  LargeIcon := TPicture.Create;
  LargeIcon.Icon.Height := 32;
  LargeIcon.Icon.Width := 32;

  SmallIcon := TPicture.Create;
  SmallIcon.Icon.Width := 16;
  SmallIcon.Icon.Height := 16;

  ExtractIconEx(PChar(FileName), 0, lIcon, sIcon, 1);

  SmallIcon.Icon.Handle := sIcon;
  LargeIcon.Icon.Handle := lIcon;

  SmallIcon.SaveToFile('c:\small.ico');
  LargeIcon.SaveToFile('c:\large.ico');

  LargeIcon.Free;
  SmallIcon.Free;
end;


Jedoch hab ich das Problem, das wenn ich Icon mit TrueColor Palette extrahieren will, nur 16 Farben Icons herausbekomme :( die sehen dann ziemlich "unfein" aus. Kann mir jemand sagen wie ich an die true-Color rankomm?

_________________
Chaos-Raid Soft*
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Fr 11.10.02 18:41 
Es kann sein, dass TIcon.SaveToFile nur 4bit-Icons unterstützt. Die Datei enthält aber das Icon fast genau so, wie es in einer ICO-Datei abgespeichert wird, das heißt du kannst es theoretisch direkt aus der Datei in eine ICO-Datei kopieren.

Wichtig: ein HICON ist kein Handle zu einem kompletten Icon, sondern nur zu EINEM einzigen Abbild innerhalb des Icons. Das bedeutet, wenn das Icon, das du extrahierst zum Beispiel in 4bit und in 24bit gespeichert ist, könnte ExtractIconEx eventuell einfach das erste nehmen. Vielleicht kannst du mit CreateIconFromResourceEx das gewünschte HICON erhalten, wenn du zuvor mit LookupIconIdFromDirectoryEx() oder LoadResource die Resource geladen hast.
Im PSDK gibt im Artikel "Using Icons" ganz unten ein Codebeispiel dazu.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
phlux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23



BeitragVerfasst: Fr 11.10.02 20:01 
Hi OregonGhost!
Danke für deine Tipps, es ist genauso wie du es gesagt hast die Methode SaveToFile von TIcon unterstützt nur 4Bit :(, habe es mal ausprobiert indem ich einfach das Icon auf den Canvas einer Form gepaintet hab um zu gucken ob ich nur ein Handle auf dieses 4Bit hIcon erhielt, ist aber 24Bit, ergo, SaveToFile unterstützt nur 4Bit, ich werde morgen nochmal das ganze mit deinen Code Vorschlägen überarbeiten, danke!

_________________
Chaos-Raid Soft*