Thema: Delphi Bilder schneller laden

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Bilder schneller laden

  Alt 14. Nov 2008, 19:52
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."
  Mit Zitat antworten Zitat