Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Icon erstellen mit CreateBitmap bzw. CreateDIBitmap

  Alt 28. Sep 2012, 09:01
Hallo zusammen,

es ist mal wieder soweit: Und zwar habe ich ein Problem mit der super schönen GDI Funktion CreateDIBitmap (mal wieder).

Ich habe mir eine Routine geschrieben, mit der ich eine Icon Datei parsen und alle Einzelbitmaps extrahieren kann. Die Daten liegen dann in der Form eines TBitmapInfoHeader Structs inklusive der eigentlichen Bilddaten vor.

Nun möchte ich die Funktionalität der LoadIcon API implementieren. Sprich: ich übergebe die gewünschten Maße und erhalte dann ein HICON, welches ich auf ein beliebiges Canvas zeichnen kann. Soweit die Theorie.

Mein erster Ansatz war CreateBitmap mit anschließendem CreateIconIndirect. Das funktionierte bei meinem ersten Testicon überraschend gut. Dann jedoch hatte ich andere Icons, die entweder komplett schwarz waren oder auf dem Kopf standen.

Bei meinen Recherchen im Internet bin ich auf die CreateDIBitmap Funktion gestoßen, welche sich zumindest um die bottom up Images selbst kümmern sollte. Das Problem ist, das hierbei mein umgedrehtes Testicon ein 0 Handle verursacht (GetLastError ist aber ebenfalls 0). Die Icons die vorher schwarz waren, werden nun total verzerrt und falschfarbig dargestellt.

Der CreateDIBitmap API übergebe ich momentan einfach exakt den Info Header, den ich vorher aus der Icon Datei ausgelesen hatte.

Hat jemand sowas ähnliches vielleicht schonmal gemacht und kann mir etwas auf die Sprünge helfen?

Viele Grüße
Zacherl
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat