Hallo,
ich hätte hier ein kleines Problemchen mit einer Verständnisfrage. Ich schreibe gerade ein ganz ganz schnelles quick and dirty Progrämmchen und wundere mich...
Ich erzeuge zur Laufzeit mehrere TImage Komponenten, die flächendeckend auf einem Formular landen.
Ich weise jedem TImage ein kleines Bildchen zu in der Größe weniger KB - Arbeitsspeicherlast sehr gering.
Das Interessante hier: Lade ich die Bilder vorab in eine TImagelist und kopiere dann die Bitmap im Speicher zu den einzelnen TImages, dann wird das mit zunehmender Anzahl der TImages sehr langsam.
Lade ich dagegen jedes Mal die Grafik neu von der Festplatte, dann ist das richtig fix.
Ich kann mir aber absolut keinen Reim darauf machen, warum die Festplatte schneller sein sollte als der Arbeitsspeicher. Daher die Frage: Warum ist das so? Sind das irgendwelche Besonderheiten der TImagelist oder...?
Würde dieses Phänomen einfach gerne verstehen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| Tiles: array of array of TImage imagelist1 : TImagelist tile_std : String (Pfad zur Grafik) .... ----------
for iy:=0 TO maxy DO for ix:= 0 TO maxx DO BEGIN IF Tiles[ix,iy] = nil then begin Tiles[ix,iy] := TImage.Create(form1); Tiles[ix,iy].parent := form1; Tiles[ix,iy].Stretch := true; Tiles[ix,iy].OnClick := ImageClick; Tiles[ix,iy].PopupMenu := PopupMenu1; END;
Tiles[ix,iy].left := ix * DX; Tiles[ix,iy].top := iy * DY; Tiles[ix,iy].Height := DY; Tiles[ix,iy].Width := DX;
imagelist1.GetBitmap(0, Tiles[ix,iy].Picture.Bitmap); |