Ich bin in der 11. Klasse an einem Gymnasium und meine Seminararbeit wird eine Simulation der Physik des Skispringens.
Der Benutzer dieses Programms sieht also einen Skisprung (in 2D) von der Seite und kann die entsprechenden physikalischen Werte ändern und deren Auswirkungen sehen.
Der Skispringer wird dabei durch ein Shape-Objekt (später vllt durch ein kleines Bild) dargestellt. Mithilfe eines Timer-Objekts werden in jedem Timer-Durchlauf die neuen Koordinaten und Geschwindigkeiten berechnet und dem Shape-Objekt zugewiesen.
Den Hang lasse ich zuvor folgendermaßen auf das Canvas einer paintbox zeichnen:
Zur Verdeutlichung hier die Prozedur, mit der der Hang gezeichnet wird:
Code: Alles auswählen
//xzeich und yzeich sind die Koordinaten des aktuellen Punktes.
//xzeich wird immer erhöht und yzeich je nachdem, an welcher Stelle, mithilfe von Funktionen berechnet.
procedure TForm1.Button3Click(Sender: TObject);
begin
while xzeich<280 do begin
xzeichalt:=xzeich;
xzeich:=xzeich+1;
yzeichalt:=yzeich;
if xzeich<=35 then
yzeich:=0.65*xzeich+5
else if xzeich<=80 then
yzeich:=sqrt(90*90-(xzeich-84.04895155)*(xzeich-84.04895155))-52.70992546+5
else if xzeich<=227.1 then
yzeich:=-(0.000052*(xzeich-80)*(xzeich-80)*(xzeich-80)-0.01148*(xzeich-80)*(xzeich-80))+40+5
else
yzeich:=122.892421+5;
//Hier werden die Werte auf das Canvas gezeichnet:
paintbox1.canvas.moveto(round(faktor*xzeichalt),round(faktor*yzeichalt));
paintbox1.canvas.lineto(round(faktor*xzeich),round(faktor*yzeich));
end;
button1.enabled:=true;
end;
Wenn ich das Formularfenster minimiere, bzw. ein anderes Fenster über den Hang rutscht, verschwindet dieser, also das auf das Canvas Gezeichnete. Auch wenn das Shape-Objekt den Hang streift, wird dieser Teil sozusagen wegraddiert.
Wie kann ich dieses Phänomen abschaffen?
Falls ihr euch eine Vorabversion der Simulation anschauen wollt, könnt ihr sie hier runterladen (Die Ausgabe von vx und vy in den Labels ist manchmal fehlerhaft, wird noch behoben).
Danke schonmal.

MfG
alex189
PS: Falls ihr sonstige Fragen zu diesem Projekt habt, könnt ihr sie natürlich gerne stellen.