Hi,
wenn dir die Lösung nicht zu ungenau ist, dann könntest du es so machen:
Die Koordinaten um Kommawerte erhöhen (z.B.: +0,5) und die Koordinate GERUNDET an die Zeichenfunktion übergeben.
Der Nachteil ist aber, dass bei sehr kleinen Winkeln die Bahn "ruckelnd" gezeichnet wird.
Ich hab dir mal ein Programm dazu geschrieben, dass die diese Winkel simuliert.
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:
| implementation
{$R *.dfm}
var x,y,m,n:real;
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Interval:=5; Form1.DoubleBuffered:=true; x:=10; y:=10; m:=StrToFloat(Edit1.Text); n:=StrToFloat(Edit2.Text); end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height); Image1.Canvas.Ellipse(round(x),round(y),round(x+10),round(y+10)); x:=x+m; y:=y+n; if (round(x)>=Image1.Width) or (round(y)>=Image1.Height) then Timer1.Interval:=0; end; |
Gib in die Edits Werte zwischen 1 und 0 ein (bei größeren Werten wird die Kugel zu schnell) und klick auf den Button. Sind beide Werte gleich groß, wird ein 45° Winkel gezeichnet.
Ich hoffe, das hilft dir weiter.
"Naturwissenschaft setzt notwendig voraus, dass gleiche Umstände immer auch gleiche Auswirkungen haben. Nun, dem ist nicht so!" - R. Feynman