Bei einem Icon hätte ich jetzt gesagt, dass dies eher an den Spezifikationen des ICO Formats liegt, dass die BMP Datenstruktur mit benutzt. Aber ich muss mich teilweise korrigieren:
Zitat von
Wikipedia:
An integrated alpha channel has been introduced with the undocumented BITMAPV3INFOHEADER and with the documented BITMAPV4HEADER (since Windows 95) and is used within Windows XP logon and theme system as well as Microsoft Office (since v2000); it is supported by some image editing software, such as Adobe Photoshop since version 7 and Adobe Flash since version MX 2004 (then known as Macromedia Flash). It is also supported by GIMP, Google Chrome, Microsoft PowerPoint and Microsoft Word.
For compatibility reasons, most applications use the older DIB headers for saving files. With
OS/2 not more supported after Windows 2000, for now the common Windows format is the BITMAPINFOHEADER header.
Der fette Teil dürfte aber, auch wenn diese Erweiterung offenbar prinzipiell existiert, das Problem mit dem Speichern unter Delphi sein. Ich gehe
ganz stark davon aus, dass dort auch die alten DIB Header zum Einsatz kommen.
Wenn es also BMP sein muss, dann müsstest du entweder eine Lib auftun, die die neuen Header nutzt (ich kenne spontan keine), oder das Speichern selber implementieren. Vielleicht kann
GDI+ da auch was, aber die ist eigentlich abgekündigt. Und immer damit rechnen, dass andere Programme von der Transparenz nichts sehen, oder gar mit dem ganzen Bild nichts mehr anfangen können. (Die oben genannten gehen ja zumindest schon mal.)
Edit: Ich habe auch schon Probleme mit Delphis TBitmap bekommen, wenn dort Alpha mit enthalten sein sollte. Wenn ich mich richtig erinnere, zerschießen manche
API Funktionen den Kanal ab und zu. Ich würde daher eher voll auf eine Lib wie die
Graphics32 setzen, oder aber zumindest
GDI+, welche beide voll "Alpha-Aware" sind.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)