AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Icon erstellen mit CreateBitmap bzw. CreateDIBitmap

Icon erstellen mit CreateBitmap bzw. CreateDIBitmap

Ein Thema von Zacherl · begonnen am 28. Sep 2012 · letzter Beitrag vom 28. Sep 2012
Antwort Antwort
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, 10: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
Benutzerbild von Zacherl
Zacherl

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

AW: Icon erstellen mit CreateBitmap bzw. CreateDIBitmap

  Alt 28. Sep 2012, 11:29
Edit: Die falschen Farben liegen wohl daran, dass meine Palette nicht korrekt übernommen wird. Nach 3 Stunden rumprobieren habe ich jetzt allerdings die CreateIconFromResourceEx API entdeckt, mit der man mein Vorhaben ganz einfach realisieren kann.

Die fertige Unit zum Laden und Speichern von Icons aus und in Icon Dateien oder Resourcen, habe ich mal in der CodeLib gepostet:
http://www.delphipraxis.net/170682-l...ml#post1184833
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (28. Sep 2012 um 13:20 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf