Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#1

Bitmap in Icon konvertieren [.NET 2.0]

  Alt 11. Mai 2006, 09:22
Folgende Situation. Ich verwende für meine Anwendung eine Icon-Bibliothek, in der die Icons jedoch aus (mehr oder weniger) praktischen Gründen nur als PNG vorhanden sind. Da .NET dieses Format von sich aus unterstützt, ist das bis hierhin auch kein Problem. An einigen Stellen jedoch fordert die Abhängigkeit von Windows ihren Tribut. Eine davon ist: Ich möchte in meiner MDI-Anwendung das Icon der MDI-Kindfenster dynamisch an den Inhalt anpassen. Man kann also eine Reihe verschiedener Dateien bearbeiten, von denen jede in der Anwendung ihr eigenes Symbol hat (aber eben als PNG-Datei). Form.Icon kann man aber nur ein Icon zuweisen. Dasselbe Problem ergibt sich bei einem NotifyIcon (das meine Anwendung allerdings nicht verwendet, da bin ich nochmal davongekommen ).
Es gibt zwar eine Icon.ToBitmap-Methode, aber keine Icon.FromBitmap oder Bitmap.ToIcon. Die einzige Möglichkeit ist, so scheint es mir, folgende:
Code:
Icon = Icon.FromHandle(myBitmap.GetHicon());
Funktioniert prächtig. Nur... ich bin in .NET, ich will kein HICON. Zumal die Dokumentation unmissverständlich klar macht, dass man bitteschön DestroyIcon aus der Win32-API aufzurufen hat. P/Invoke will ich aber erst recht nicht benutzen. Gibt's da eine Lösung, die ich mal wieder übersehen habe?

Und angenommen, es gibt keine bessere Lösung, ist es dann akzeptabel, die Handvoll benötigten Icons zum Start der Anwendung aus den Bitmaps zu erzeugen und einfach damit zu leben, dass sie erst zum Anwendungsende freigegeben werden? Oder sollte ich den Umweg gehen und aus den PNG-Dateien handfeste ICO-Dateien erzeugen, was auch bedeutet, dass ich zwei Sets von Icons zu warten habe?

Ach, und wo wir dabei sind, weiß jemand, ob das Problem in Vista endlich behoben ist und man dort auch für die Fenster-Icons und die NotifyIcons Bitmaps statt Icons benutzen kann?
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat