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