Einzelnen Beitrag anzeigen

ken_jones

Registriert seit: 16. Mai 2005
Ort: Luzern
154 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

GDI+: IStream oder TStreamAdapter

  Alt 20. Aug 2012, 17:04
Ich hatte bis eben gerade ein Problem, es nun gelöst, aber nicht ganz begriffen wieso es jetzt geht. Kann mir einer von euch Cracks eine Hinweis geben?

Meine Applikation verwendet GDI+ (unter DXE2,Win7) und versucht einen JPG-Stream in eine GPBitmap zu laden.

Folgender Code (wie er überall im Netz zu finden ist und funktionieren sollte) funktioniert bei mir nicht:

Delphi-Quellcode:
procedure TfrmMain.TestProc(Jpegdata: TMemoryStream);
var
  Image : IGPBitmap;
  Graphics : IGPGraphics;
  SA : TStreamAdapter;
begin
  Graphics := TGPGraphics.Create(imgVorschau.Canvas.Handle);
  try
    sa := TStreamAdapter.Create(JpegData);
    Image := TGPBitmap.Create(sa);
    Graphics.DrawImage(Image, 0, 0, Image.Width, Image.Height);
  except
    ...
  end;
end;
Folgender Code schon, aber wieso?

Delphi-Quellcode:
procedure TfrmMain.TestProc(Jpegdata: TMemoryStream);
var
  Image : IGPBitmap;
  Graphics : IGPGraphics;
  SA : IStream;
begin
  Graphics := TGPGraphics.Create(imgVorschau.Canvas.Handle);
  try
    sa := TStreamAdapter.Create(JpegData);
    Image := TGPBitmap.Create(sa);
    Graphics.DrawImage(Image, 0, 0, Image.Width, Image.Height);
  except
    ...
  end;
end;
Einzig hab ich den SA von TStreamAdapter auf IStream geändert, aber ich erzeuge nach wie vor den TStreamAdapter auf diese Variable.
Ist das Zufall, dass das jetzt bei mir läuft (und dann früher oder später doch wieder crashed) oder geht das so in Ordnung?

Danke für Hints!
  Mit Zitat antworten Zitat