Guten Abend,
Ich bin auf der Suche nach einer Komponente, die nichts weiter können soll als ein GIF-Bild (einen der Frames) möglichst ressourcenschonend auf ein TBitmap auszugeben. Da es sich um sehr große Bilder handelt, darf ich keinen Speicher verschwenden *g*
TjvGifImage und TGifImage benutzen interne Bitmaps zur Darstellung der Grafik, reicht es dann, wenn ich TargetBMP den
Handle des internen Bitmaps zuweise und anschließend die GIF-Graphik freigebe? Wird dadurch nicht der
Handle ungültig?
Hier mal der Code, den ich zum laden verwende (kann man da noch was verbessern?
)
Delphi-Quellcode:
procedure TForm1.LoadResourceGraphic(ResName: String;
SrcFormat: TPictureFormat; TargetBMP: TBitmap);
var RS: TResourceStream;
SrcGraphic: TGraphic;
begin
SrcGraphic := nil;
RS := TResourceStream.Create(HINSTANCE, ResName, 'FORGEPIC');
try
case SrcFormat of
TBMP: TargetBMP.LoadFromStream(RS);
TGIF: begin
SrcGraphic := TJvGifImage.Create;
end;
TJPG: begin
SrcGraphic := TJPEGImage.Create;
end;
end;
If Assigned(SrcGraphic) then
try
SrcGraphic.LoadFromStream(RS);
TargetBMP.Width := SrcGraphic.Width;
TargetBMP.Height := SrcGraphic.Height;
TargetBMP.Canvas.Draw(0, 0, SrcGraphic);
finally
SrcGraphic.Free;
end;
finally
RS.Free;
end;
end;
Tausend Dank schonmal fürs lesen!
Gruß,
Dani
Dani H.