![]() |
Timages Ladezeiten
Hallöchen Leute,
ich bräuchte dringend eure Hilfe :> Mein Problem ist das folgende: Und zwar möchte ich gerne jede Sekunde, nach einiger Zeit sogar in noch kleineren Intervallen, die Bilder von 55 dynamischen TImages gleichzeitig ändern. Meine Überlegungen waren folgende:
Delphi-Quellcode:
for i:= 1 to 55 do
begin if animation[i]=true then begin if i <= 11 then a[i].picture.loadfromfile('Bilder\invader1.jpg') else if i <= 33 then a[i].picture.loadfromfile('Bilder\invader5.jpg') else if i <= 55 then a[i].picture.loadfromfile('Bilder\invader3.jpg'); animation[i]:=false; end else begin if i <= 11 then a[i].picture.loadfromfile('Bilder\invader2.jpg') else if i <= 33 then a[i].picture.loadfromfile('Bilder\invader6.jpg') else if i <= 55 then a[i].picture.loadfromfile('Bilder\invader4.jpg'); animation[i]:=true; end; end; Das funktioniert zwar, jedoch bleibt die gesamte Anwendung, beim Laden der Bilder, für den Bruchteil einer Sekunde stehen, was sehr unschön ist :/ Könnt ihr mir verraten, wie ich die Ladezeiten verkürzen kann? Oder das Problem vielleicht ganz anders lösen kann? :) mfg Behemoph |
Re: Timages Ladezeiten
Alle Bilder von vornherein in eine ImageList? Geht natürlich nur bei gleicher Größe.Sonst trotzdem vorher laden und in Liste/Array of TBitmap o.ä. ablegen.
Grüsse, Dirk |
Re: Timages Ladezeiten
Danke für die schnelle Antwort. Die Bilder sind größtenteils gleich groß. Vllt geht es auch mit 2 Imagelists.. Dazu müsste ich nur wissen, wie ich das realisieren kann, wenn du meinst, dass das was ausmachen würde ;)
mfg Behemoph |
Re: Timages Ladezeiten
Du kannst Threads nutzen, die die Bilder im Hintergrund laden. Dabei bleibt deine Anwendung bedienbar. Ist aber etwas komplexer.
Was ich mir noch vorstellen könnte, wäre das vorherige Laden aller Bilder, wie schon angesprochen. Oder auch, wie im Web ab und zu verwendet, dass man alle Bilder in ein Bild wirft und somit nicht 55 Bilder laden muss, sondern nur eines, welches man dann entsprechend zu verarbeiten hat. |
Re: Timages Ladezeiten
Auch dir ein Dankeschön :)
Werde dann wohl zur Timagelist-Methode greifen. Nur.. Wie bekomme ich die 110 Bilder(jpegs) da in solche listen rein und wie rufe ich die richtigen zum richtigen zeitpunkt auf? |
Re: Timages Ladezeiten
Du kannst diese schon zur Entwicklungszeit ins Programm laden, wenn du willst. Setze eine TImageList auf die Form und mache einen Doppelklick darauf.
|
Re: Timages Ladezeiten
Aaaaah, alles klar, danke dir ;)
also.. hab jetzt mal zu testzwecken ne imagelist1 aufs formular gesetzt und bei formcreate reingeschrieben:
Delphi-Quellcode:
a[i] ist ein array of tbitmap.
for i:= 1 to 55 do
begin a[i]:=tbitmap.create; a[i].LoadFromFile('bilder\invader1.bmp'); imagelist1.Add(a[i],nil); a[i].free; end; Es lässt sich soweit schonmal ohne Fehler kompilieren.. stellt sich mir nurnoch die Frage, wie ich dann die Bilder da wieder rauskriege :> Also mein Ziel war es ja, die Bilder, mit Hilfe eines Timers, abwechselnd darzustellen. |
Re: Timages Ladezeiten
*autsch* was schreibst du denn für Code? :zwinker: erzeug doch einfach nur einmal ein image und lade da jedes mal das bitmap rein.
Delphi-Quellcode:
image := TBitmap.Create();
try for i:= 1 to 55 do begin image.LoadFromFile('bilder\invader1.bmp'); Imagelist1.Add(image, nil); end; finally FreeAndNil(image); end; // so kann es es in einem image anzeigen var image : TBitmap; begin image := TBitmap.Create(); try if (ImageList1.GetBitmap(0, image) ) then Image1.Picture.Bitmap.Assign(image); finally FreeAndNil(image); end; end; |
Re: Timages Ladezeiten
Okidoki, es läuft.. glaub ich :)
Das letzte Problem ist jetzt allerdings, dass die Bilder viel zu groß sind und mein vorheriges
Delphi-Quellcode:
irgendwie nicht mehr gültig ist.
stretch:=true
Jedenfalls wird nur ein kleiner Teil des viel zu großen Bildes angezeigt :/ mfg Behemoph |
Re: Timages Ladezeiten
Es gibt einen dummen Fehler, der mir immer passiert wenn ich eine Imagelist benutze :mrgreen:
Sind die Eigenschaften height und width der Imagelist auf die richtige Größe eingestellt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 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 by Thomas Breitkreuz