Zum testen wie isometrische Grafik funzt habe ich eine Schleife geschrieben die auf Knopfdruck 150 Bilder (10*15) (je 1kb transparentes gif) erzeugt was recht heftig zuckt.
Um flackern beim scrollen zu vermeiden dachte ich mir, es wäre vielleicht besser die jetzt vorhandenen Bilder nach Bedarf neu zu füllen statt alles jedesmal neu zu zeichnen, also nur image.picture.loadfromfile() machen.
(Würde das überhaupt etwas bringen?)
Das klappt aber natürlich nicht, der Compiler sagt mir jedesmal "undefinierter Bezeichner" weil es ja zu dem Zeitpunkt noch kein TImage mit dem Namen gibt...
Habe dann testweise folgendes versucht:
Das nimmt der Compiler an, aber beim drücken der Scrolltaste bekomme ich dann ein "Access violation"
Meine "Erzeugungsschleife" :
Um flackern beim scrollen zu vermeiden dachte ich mir, es wäre vielleicht besser die jetzt vorhandenen Bilder nach Bedarf neu zu füllen statt alles jedesmal neu zu zeichnen, also nur image.picture.loadfromfile() machen.
(Würde das überhaupt etwas bringen?)
Das klappt aber natürlich nicht, der Compiler sagt mir jedesmal "undefinierter Bezeichner" weil es ja zu dem Zeitpunkt noch kein TImage mit dem Namen gibt...
Habe dann testweise folgendes versucht:
Code:
procedure TForm1.KarteBewegen; const bild = 'img17'; begin TImage(FindComponent(bild)).Picture.loadfromfile('../testgras.gif'); end;
Meine "Erzeugungsschleife" :
Code:
procedure TForm1.KarteZeichnen; var img: array[1..150] of TImage; i,x,xa,y,count1,count2 : Integer; begin x := -38; xa := -38; y := -15; count1 := 1; count2 := 1; for i := 1 to 150 do begin img[i] := TImage.Create(Form1.Panel1); img[i].Name := 'img'+inttostr(i); // Test img[i].Transparent := True; img[i].Parent := Form1.Panel1; if count1 < 11 then begin xa := xa+46; end else begin Inc(count2, 1); if count2=3 then count2:=1; xa := x+46+(count2*23-23); y := y+23; count1 := 1; end; img[i].Top := y; img[i].Left := xa; img[i].AutoSize := True; img[i].Picture.LoadFromFile('../testgras.gif'); Inc(count1, 1); end; lbl_test.caption := img[17].Name; // Test img[17].Picture.LoadFromFile('../testbaum.gif'); // Test end;
Comment