Hallo, ich experimentiere gerade zum erstenmal mit isometrischer Grafik herum.
Bisher habe ich eine Prozedur die 150 transparente, sich überlappende Bilder erstellt und aus einer Bilderliste füllt (Bilder sind 46*92).
Das klappt auch, Quelltext siehe unten, wobei ich mich frage ob man die Bilder vielleicht irgendwie in ein Bild oder Container füllen könnte um die Erzeugung zu beschleunigen.
Bild nach drücken der Starttaste:
http://schaak.dyndns.info/pics/iso1.jpg
Wenn ich jetzt einen der Scrollbuttons drücke, werden die Grafiken wieder neu aus der Bilderliste gefüllt, die Werte der Grafik kommt erstmal provisorisch aus einer Stringliste.
Erst passierte gar nichts, nachdem ich image.refresh mit eingebaut habe, klappt es, aber die Bilder sind "kaputt".
Bild nach scrollen:
http://schaak.dyndns.info/pics/iso2.jpg
Irgendwie bleiben die Kronen der Bäume im transparenten Teil stehen, während die neuen Bäume von den den anderentiles überdeckt werden.
Habe die Bilder jetzt testweise von links oben nach rechts unten und andersrum gefüllt.
Quelltext für ru nach lo:
Quelltext für die Ersterstellung:
Bisher habe ich eine Prozedur die 150 transparente, sich überlappende Bilder erstellt und aus einer Bilderliste füllt (Bilder sind 46*92).
Das klappt auch, Quelltext siehe unten, wobei ich mich frage ob man die Bilder vielleicht irgendwie in ein Bild oder Container füllen könnte um die Erzeugung zu beschleunigen.
Bild nach drücken der Starttaste:
http://schaak.dyndns.info/pics/iso1.jpg
Wenn ich jetzt einen der Scrollbuttons drücke, werden die Grafiken wieder neu aus der Bilderliste gefüllt, die Werte der Grafik kommt erstmal provisorisch aus einer Stringliste.
Erst passierte gar nichts, nachdem ich image.refresh mit eingebaut habe, klappt es, aber die Bilder sind "kaputt".
Bild nach scrollen:
http://schaak.dyndns.info/pics/iso2.jpg
Irgendwie bleiben die Kronen der Bäume im transparenten Teil stehen, während die neuen Bäume von den den anderentiles überdeckt werden.
Habe die Bilder jetzt testweise von links oben nach rechts unten und andersrum gefüllt.
Quelltext für ru nach lo:
Code:
function TForm1.test(weg: String):Boolean; var i,x,xa,y,bild,bildart,zaehler: Integer; begin x := strtoint(lbl_xwert.Caption); y := strtoint(lbl_ywert.Caption); xa := x; bild := 150; zaehler :=1; lbl_test.caption := weg; // Test for i := 1 to 150 do begin bildart := strtoint(copy(zeichenk[y],xa,1)); ImageList1.GetBitmap(bildart,img[bild].picture.bitmap); dec(xa,1); dec(bild,1); inc(zaehler,1); if zaehler = 11 then begin zaehler := 1; dec(y,1); xa := x; end; img[bild].Refresh; end; end;
Code:
procedure TForm1.KarteZeichnen; var i,x,xa,y,count1,count2,zeile : Integer; begin // Testmap in Stringliste einlesen zeichenk := TStringList.Create; zeichenk.LoadFromFile('test.map'); // Ende x := -38; xa := -38; y := -15; count1 := 1; count2 := 1; zeile := 0; 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; inc(zeile, 1); end; img[i].Top := y; img[i].Left := xa; img[i].AutoSize := True; ImageList1.GetBitmap(strtoint(copy(zeichenk[zeile],count1,1)),img[i].picture.Bitmap); inc(count1, 1); end; end;
Comment