AAAlso .. das mit dem Canvas der Form mag funktionieren, gut ist das aber nicht.
Eine gute Lösung ist folgendes:
1. Nimm eine Paintbox und tu sie aufs form - das ist deine Zeichenfläche
2. Deklariere im private-Bereich deines Form ein Bitmap: TBitmap;
3. Im OnCreate: Bitmap erstellen, und auf die Größe der Paintbox setzen, im OnDestroy zerstören
4. Im OnPaint der Paintbox ein
Bitblt vom Bitmap auf das Canvas der Paintbox.
5. Eine "Spielschleife" wie folgt:
Delphi-Quellcode:
procedure Form1.GameLoop()
var
dt, lastt: Cardinal;
begin
dt = 0;
lastt = Gettickcount();
while (not Application.Terminated)
begin
dt = Gettickcount() - lastt;
lastt = lastt + dt;
for each obcect in Objectlist do
Object.anzeigen(Bitmap, dt);
Paintbox.Refresh(dt);
Bitmap.Clear();
Application.Processmessages;
end;
end;
So ähnlich zumindest - ist jetzt Pseudocode
(Ist jetzt etwas Quick and Dirty)
Wenn du es richtig gut machen möchtestm, solltest du die Sxchlefe in einen Thread auslagern
6. Die Prozedur .anzeigen deines Balls muss dann in Abhängigkeit der Zeitdifferenz sich auf das übergebene Bitmap malen. Objects sind deine Objekte