AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi mehrere TImages im Voraus laden
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere TImages im Voraus laden

Ein Thema von dioony · begonnen am 6. Jul 2005 · letzter Beitrag vom 6. Jul 2005
Antwort Antwort
dioony

Registriert seit: 18. Apr 2005
Ort: Oldenburg
18 Beiträge
 
Delphi 6 Enterprise
 
#1

mehrere TImages im Voraus laden

  Alt 6. Jul 2005, 21:16
Servus!

Ich weiß, dass jeder hier gleich rummeckern wwill, wegen dem betreff, aber mir viel nichts passenders ein...

Nun zu meinem Problem:

Ich lade mehrere Jpegs in während der laufzeit erstellten TImages... Diese haben als parent eine Scrollbox. Das ist auch schön und gut... Nun ist es so, dass nicht alle images geladen werden, sondern nur die, die man gerade in der scrollbox sieht. wenn man nach unten scroll werden erst die anderen images nachgeladen. Hat da jemand ne idee, wie man sie quasi voraus laden kann?


das erstellen sieht wie folgt aus:

Delphi-Quellcode:

var PictureThumb: array of TImage;

(....)

  for i:=0 to ListBox4.Count-1 do
  begin
    PictureThumb[i]:=TImage.Create(self);
    PictureThumb[i].Parent:=ScrollBox1;
    PictureThumb[i].Left:=(left*131);
    PictureThumb[i].Height:=130;
    PictureThumb[i].Width:=130;
    PictureThumb[i].Top:=top;
    PictureThumb[i].Picture.Create;
    PictureThumb[i].Picture.LoadFromFile(ListBox4.Items[i]);
    PictureThumb[i].Picture.
    PictureThumb[i].Stretch:=true;
    PictureThumb[i].Proportional:=true;
    PictureThumb[i].Show;
  end;
* in der ListBox4 stehen die ganzen dateinamen der bilder...

Hab es auch schon mit der graphics32 komponente versucht, aber da lädt er die bilder ziemlich langsam rein. die obige ist die schnellste methode zum bilder laden, die ich bisher rausgefunden habe. alle images vorher zu verkleiner oder so bringt auch keine bessere performance...
falls jemand da noch andere kennt wäre es auch nicht schlecht, wenn da jemand ein tipp hätte!

Danke im voraus!

bis dann dioony
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: mehrere TImages im Voraus laden

  Alt 6. Jul 2005, 21:26
GR32 ist IMO schonmal der richtige Weg .
Nimm am Besten ein TImgView32 und lade alle Bilder in dessen Bitmap (also nicht mehrere, sondern nur ein großes), dann sollte es besser gehen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
dioony

Registriert seit: 18. Apr 2005
Ort: Oldenburg
18 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: mehrere TImages im Voraus laden

  Alt 6. Jul 2005, 21:33
ich weiß jetzt nicht genau wie du das meinst,

soll ich jetzt quasi auch mehrere TImgView32s erstellen und dann in jedes die Bilder laden?!

wie schon gesagt,haben meine tests ergeben, dass die GR32 ziemlich langsam ist, vor allem beim laden von ca. 100 bildern a 300 kb...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: mehrere TImages im Voraus laden

  Alt 6. Jul 2005, 21:44
Wie sind deine Bilder in der Scrollbox angeordnet?
Wenn sie halbwegs nebeneinander liegen, würde ich ein großes TImgView32 benutzen, das die gesamte Scrollbox ausfüllt, und auf dessen Bitmap alle Bilder zeichnen. Dass die GR32-Lib langsam ist, wäre mir neu .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
dioony

Registriert seit: 18. Apr 2005
Ort: Oldenburg
18 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: mehrere TImages im Voraus laden

  Alt 6. Jul 2005, 22:17
Die bilder liegen halt 4 stück nebeneinander und dann entsprechend dynamisch die reihen nach unten hin weg...

das mit einem großen bitmap wäre nicht gegangen, weil ich jedes bild im nachhinein einzeld ansprechen muss und das wäre dann viel zu aufwendig...

hab jetzt den code von axelf aus der codelibrary genommen. dieser zeichnet ziemlich schnell die bilder und das problem mit dem scrollen ist dadurch auch behoben...

aber trotzdem danke...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: mehrere TImages im Voraus laden

  Alt 6. Jul 2005, 22:55
großes bitmap?!

versteh ich nicht....

Delphi-Quellcode:
type Tstringarray = array of string;

function thumbs(bitmaps:Tstringarray; size:TPoint; spacing, cols:integer;):TBitMap32;
var temp:TBitmap32;
    i:integer;
    r:TRect;
begin
result:=TBitMap32.create;
temp:=TBitMap32.create;


result.width:= cols * (spacing + size.X) + spacing;
result.height := length(bitmaps) * (spacing + size.Y) + spacing;

for i:= 0 to high(bitmaps) do
 begin
  temp.loadfromfile(bitmaps[i]);
  r:=rect((spacing + size.X) * i mod cols,(spacing + size.X) * i mod cols + size.X, i div cols * (size.Y+spacing), i div cols * (size.Y+spacing) + size.Y); //Diese Zeile ist überprüfungswürdig....
  result.draw(r,r,temp);
 end;
end;
Diese Funktion sollte dir aus einem array von Dateinamen, Skalierungsmaßen, Abstand und anzahl der Spalten ein großes Thumb-Bitmap liefern.

NICHT getestet, und die oben markierte zeile muss überprüft werden, weil ich die Berechnungen nur einmal durchdacht habe.
Also selber überlegen, wo genau das einzelne bild hinmuss!

(Werde mir vielleicht morgen eine kleine Demo rundrum bauen.)
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz