Einzelnen Beitrag anzeigen

Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

GDI, GDI+ oder doch Direct2D?

  Alt 12. Mai 2011, 12:10
Hallo Graphik-Experten!
Irgendwie komme ich gedanklich an folgender Frage nicht weiter -- und das große Internet hat mich jetzt mehr verwirrt als das es geholfen hat. Mein Anliegen:
Die Applikation soll
  • Grafiken (BMP, JPG oder PNG) laden
  • sie anzeigen
  • User kann die Farbe der Grafik ändern können
  • die Grafik soll im Ursprungstyp (BMP, JPG oder PNG) gespeichert werden.
Jetzt dachte ich, ich erstelle für jeden Grafik-Typ ein entsprechendes Objekt:
  • if graphtype = 'PNG' then myGraph := TPngImage.Create;
  • if graphtype = 'BMP' then myGraph := TBitmap.Create;
  • if graphtype = 'JPG' then myGraph := TJpeg.Create;
Für das Anzeigen der Grafik, dachte ich, muß ich die Grafik einem TImage übergeben:
  • bmp := TBitmap.Create;
  • bmp.width := myGraph.width;
  • bmp.height:= myGraph.height;
  • bmp.canvas.draw(myGraph,0,0);
Nach der Änderung durch den User, speicher ich die Grafik wieder im Ursprungs-Typ:
  • myGraphOut : TGraphics
  • myGraphOut.width := bmp.width;
  • myGraphOut.canvas.draw(bmp);
  • myGraphOut.savetofile(whatever)

Jetzt kommen wir zum Casus-Knacktus:
Wenn ich doch intern Alles, was da kommt in ein BMP verwandle, dann habe ich doch mindestens das Problem, dass z.B. der Alpha-Channel des PNG futsch ist. Das kann also nicht das gelbe vom Ei sein.
Zugegebenermaßen, habe ich in der EmBa-Newsgroup eine hähnliche Frage gestellt, und dort wurde mir dann GDI+ empfohlen. Ich kenne mich GDI+ nicht aus, aber wieso sollte das die Lösung sein?
Und vor allem: Die Applikation soll nur auf Win7 laufen -- dann könnte ich ja gleich Direct2D nutzen, oder?

Das alles klingt vielleicht komplizierter als es vielleicht wirklich ist (anzeigen, ändern, speichern) -- aber ich bin nun wirklich verwirrt, was ein gangbarer Weg zu dieser kleinen Applikation ist.

Könnt ihr helfen?

Vielen Dank
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat