![]() |
Jpeg als TGPBitmap aus Resource laden
Um Jpegs aus einer Resource zu laden gehe ich zur Zeit so vor:
Delphi-Quellcode:
Ich würde aber gern in eine TGPBitmap laden und habe versucht:
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;
Delphi-Quellcode:
{
uses ..., Winapi.Gdipapi, Winapi.GdipObj, ...; }
Delphi-Quellcode:
Das geht so aber nicht, weil:
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; [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? |
AW: Jpeg als TGPBitmap aus Resource laden
Hat dazu wirklich niemand eine Idee?
|
AW: Jpeg als TGPBitmap aus Resource laden
Zitat:
|
AW: Jpeg als TGPBitmap aus Resource laden
Da gab es doch gerade einen schönen Hinweis von Sir Rufo ...
![]() Rollo |
AW: Jpeg als TGPBitmap aus Resource laden
Hallo,
Probiers mal so:
Delphi-Quellcode:
(PS: Ein try-finally ist beim Erzeugen/Zerstören von Objekten sehr sinnvoll)
procedure TMain.LoadFromResource(const S:String; var Bmp:TGPBitmap);
var Stream:TResourceStream; adapter: TStreamAdapter; begin Stream:=TResourceStream.Create(HInstance,S, RT_RCDATA); adapter := TStreamAdapter.Create(Stream); Bmp:=TGPBitmap.Create(adapter, False); adapter.Free; Stream.Free; end; |
AW: Jpeg als TGPBitmap aus Resource laden
Zitat:
Delphi-Quellcode:
-Referenz der Referenzzähler erhöht wird (ohne die Klasse
IStream
Delphi-Quellcode:
zu untersuchen)
TGPBitmap
Delphi-Quellcode:
procedure TMain.LoadFromResource( const S: String; var Bmp: TGPBitmap );
var Stream: TResourceStream; adapter: IStream; begin Stream := TResourceStream.Create( HInstance, S, RT_RCDATA ); adapter := TStreamAdapter.Create( Stream, soOwned ); Bmp := TGPBitmap.Create( adapter, False ); end; |
AW: Jpeg als TGPBitmap aus Resource laden
Zitat:
|
AW: Jpeg als TGPBitmap aus Resource laden
@Neutral General:
@Sir Rufo: Vielen Dank, das funktioniert hervorragend. @Neutral General: Zu (PS: Ein try-finally ist beim Erzeugen/Zerstören von Objekten sehr sinnvoll) Ja, in meinem Programm ist das auch alles schön verpackt. Ich wollte das in meiner Frage etwas vereinfacht darstellen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz