Um Jpegs aus einer Resource zu laden gehe ich zur Zeit so vor:
Delphi-Quellcode:
PROCEDURE TMain.LoadFromResource(const S:String; var Bmp:TBitmap);
var Jpg:TJpegImage; Stream:TResourceStream;
begin
Jpg:=TJPEGImage.Create;
Stream:=TResourceStream.Create(HInstance,S, RT_RCDATA);
Jpg.LoadFromStream(Stream);
if not Assigned(Bmp) then Bmp:=TBitmap.Create;
Bmp.Assign(Jpg);
Stream.Free;
Jpg.Free;
end;
Ich würde aber gern in eine TGPBitmap laden und habe versucht:
Delphi-Quellcode:
{
uses
...,
Winapi.Gdipapi, Winapi.GdipObj,
...;
}
Delphi-Quellcode:
PROCEDURE TMain.LoadFromResource(const S:String; var Bmp:TGPBitmap);
var Stream:TResourceStream;
begin
Stream:=TResourceStream.Create(HInstance,S, RT_RCDATA);
Bmp:=TGPBitmap.Create(Stream,False);
Stream.Free;
end;
Das geht so aber nicht, weil:
[DCC Fehler] Memory_Main.pas(2195): E2250 Es gibt keine überladene Version von 'Create', die man mit diesen Argumenten aufrufen kann
Mir ist klar, dass dass das TGPBitmap.Create(Stream,False); als ersten Parameter einen IStream erwartet, statt TResourceStream,
was mir aber nicht klar ist:
Wie bekomme ich einen IStream?
Oder allgemeiner gefragt: Wie kann ich eine Jpeg als TGPBitmap aus einer Resource laden?