Einzelnen Beitrag anzeigen

SiLo0815

Registriert seit: 23. Feb 2017
Ort: Essen, NRW
7 Beiträge
 
Delphi XE5 Enterprise
 
#1

TPNGImage in TGPImage umwandeln

  Alt 7. Mär 2017, 16:05
Hallo,

ich möchte ein TPNGImage in ein TGPImage (GDI+ Library, http://www.bilsen.com/gdiplus/index.shtml) umwandeln.
Mein bisheriger Ansatz sieht so aus:

1. PNG laden
2. PNG in TMemoryStream speichern
3. TGPImage aus diesem Stream erzeugen.
(4. Bild zeichnen)

Folgender Code wirft allerdings eine EInvalidPointer Exception:

Delphi-Quellcode:
procedure TForm2.btn11Click(Sender: TObject);
var
   PNGImage: TPNGImage;
   ImageStream: TMemoryStream;
   Image: IGPImage;
   G: IGPGraphics;
begin
   // PNG erstellen & laden
   PNGImage := TPNGImage.Create;
   PNGImage.LoadFromFile('[Dateipfad]');
   ImageStream := TMemoryStream.Create;

   // PNG in Stream speichern
   PNGImage.SaveToStream(ImageStream);

   // TGPImage von Stream erzeugen
   Image := TGPImage.FromStream(TStreamAdapter.Create(ImageStream));

   // TGPImage zeichnen
   G := TGPGraphics.Create(pbButtonTest.Canvas.Handle);
   G.DrawImage(Image, 0, 0);
end;
Dem Stacktrace zufolge sieht es so aus, als würde das Destroy vom StreamAdapter den Fehler verursachen. Was genau mache ich falsch?

Grüße
Simon
Simon

Geändert von SiLo0815 ( 7. Mär 2017 um 19:37 Uhr)
  Mit Zitat antworten Zitat