Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi falsche Transparenz bei ExtractIconEx unter WinXP (https://www.delphipraxis.net/7203-falsche-transparenz-bei-extracticonex-unter-winxp.html)

twister 5. Aug 2003 12:40


falsche Transparenz bei ExtractIconEx unter WinXP
 
Hallo,

in meinem Programm lese ich mit ExtractIconsEx die kleinen (16x16) Icons aus Programmdateien aus. Nun ist es so, dass unter Windows XP offensichtlich das XP-Icon zurückgegeen wird (z.B. wenn man das Icon der iexplore.exe ausliest). Dadurch kann das Icon nicht richtig transparent dargestellt werden, sondern hat dort, wo es eigentlich halbdurchsichtig sein sollte die Farbe schwarz.
Mein Frage deshalb: gibt es eine Funktion mit der man ein Icon mit einer bestimmten Farbzahl (z.b. 8Bit) auslesen kann?

Alexander 5. Aug 2003 12:47

Re: falsche Transparenz bei ExtractIconEx unter WinXP
 
Das schwarz liegt am Alpha-Blending (WinXP) und ist wohl ein kleiner Bug in der Komponente...
Das Problem kann man aber wie folgt lösen:
Delphi-Quellcode:
var
  SHFileInfo: TSHFileInfo;
  SysIcons: THandle;
  SystemIcons: TImageList;
begin
  SysIcons := SHGetFileInfo('', 0, SHFileInfo, SizeOf(SHFileInfo),
    SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

  SystemIcon := TImageList.Create;
  SystemIcons.Handle := SysIcons; //SystemImagelist zuweisen...
  SystemIcons.ShareImages := True;

  {Wenn ImageList1 einmal der Inhalt der SystemImageList zugewiesen wurde
  unterstützt diese fortan 32Bit Icons mit Alphablending} 
  ImageList1.Assign(SystemIcons);
  ImageList1.Clear;

  SystemIcons.Free;
Diesen "Tip" habe ich von FriFra bekommen.

twister 5. Aug 2003 12:55

Danke!
 
:spin: Vielen Dank für die schnelle Antwort!
Bin gerade neu hier, scheint aber ein wirklich gutes Forum zu sein.

Alexander 5. Aug 2003 13:44

Re: falsche Transparenz bei ExtractIconEx unter WinXP
 
Zitat:

Bin gerade neu hier, scheint aber ein wirklich gutes Forum zu sein.
Dannnoch mal herzlich wilkommen und zum zweiten Teil kann man nur jepp sagen :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz