Zitat von
Luckie:
Ich denke für das erste Bild musst du die Ladezeit in kaufnehmen. Die folgenden Bilder kannst du dann ja in MemoryStrams laden, während das erste noch angezeigt wird*. Ein anderer Faktor dürfte die Darstellung auf der Komponente sein. Was passiert denn, wenn du während des Laden die Eigenschaft Visisble der Komponente auf False setzt oder wenn du das Bild erst in ein Bitmap im Speicher lädst und dann auf den Canvas der Komponete blittest?
') Da musst du aber mal testen, ob MemorySreams und Lo0adfromStream was bringen.
Also ich habe mir extra ein eigenes TImageEx = class(TCustomControl) gebaut. In erster Linie um Bilder propertional gestretcht anzeigen lassen zu können. Ich mache es im Moment so:
Delphi-Quellcode:
TImageEx = class(TCustomControl)
private
FBitmap: TBitmap;
FPicture: TPicture;
// etc
published
property Picture: TPicture read FPicture write SetPicture;
// etc
end;
Und TPicture hat ein OnChange Event, indem ich folgendes tue:
Delphi-Quellcode:
procedure TImageEx.PicChanged(Sender: TObject);
begin
with FBitmap do
begin
Width := FPicture.Graphic.Width;
Height := FPicture.Graphic.Height;
Canvas.Draw(0,0,FPicture.Graphic);
end;
Repaint;
end;
Im OnPaint meiner Komponente blitte ich dann mein Bitmap (gestretcht oder/und zentriert, oder....) auf den
DC meiner Komponente.
Das mit dem Visible auf false setzen hab ich nicht so ganz verstanden, bzw was wäre der Nutzen?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."