AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C# Bitmap in Icon konvertieren [.NET 2.0]
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap in Icon konvertieren [.NET 2.0]

Ein Thema von OregonGhost · begonnen am 11. Mai 2006 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
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
OregonGhost

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

Re: Bitmap in Icon konvertieren [.NET 2.0]

  Alt 16. Mai 2006, 12:33
Gibt's da echt keinen Weg? Ich mag Umwege über die Win32-API nicht
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

Re: Bitmap in Icon konvertieren [.NET 2.0]

  Alt 16. Mai 2006, 12:49
Kannste das PNG nicht in ein BMP umwandeln (ich meine im Prog)
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
OregonGhost

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

Re: Bitmap in Icon konvertieren [.NET 2.0]

  Alt 16. Mai 2006, 13:14
Ja, und dann? Ich brauch doch immer noch ein Icon.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Bitmap in Icon konvertieren [.NET 2.0]

  Alt 16. Mai 2006, 13:36
Wie wär's wenn du dir eine statische Factory baust?
Der kannst du die benötigten ResourceManager übergeben und sie gezielt nach Icons fragen.
Intern könnte sie ein Dictionary halten welches dafür sorgt, dass du für jedes PNG wirklich nur ein Icon generierst.
Eine andere, wenigstens halbwegs P/Invoke-freie, Lösung fällt mir da auf die Schnelle nicht ein...
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
OregonGhost

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

Re: Bitmap in Icon konvertieren [.NET 2.0]

  Alt 16. Mai 2006, 13:53
Hmm, ja, das klingt ganz vernünftig. Schön ist es natürlich trotzdem nicht, mir unverständlich, warum Microsoft da die Umwandlung von Bitmap in Icon "vergessen" hat, aber über einen Umweg anbietet. Was daran halt blöd ist, ich benutze für das Laden von Ressourcen natürlich die Application Properties (Properties.Resources), wäre praktisch, wenn man das da einbinden könnte. Ist dann vielleicht zu überlegen, die Icons als ICO-Dateien eben doch einzubinden. Den Code würde das schöner machen.
Und ich werde jetzt mal meine Neugier befriedigen und die aktuelle Avalon-CTP runterladen um zu gucken, ob es in Zukunft alles besser wird
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:52 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