Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
Turbo Delphi für Win32
|
Re: Bug in PaintBox
8. Mär 2009, 22:30
kannst du mal ein Bild zeigen, von deinem Problem?
Was ich nicht ganz verstehe ist deine Zeichenfunktion:
PaintBox1.Canvas.LineTo(xx,yy*(-1)+593);
Nach meinen Kenntnissen hat eine Parabel folgende Form: y = ax^2 + bx + c
und eine umgekehrte Parabel die Form y = -abs(ax^2 + bx + c) // grob gesehen, gemeint ist, die Funktionswerte sind negativ. Deswegen sollte bei deiner x-Koordinate nur x stehen nicht xx und bei deiner y-Koordinate steht ax^2 + bx + 593.
Vieleicht ist der Befehl Lineto hier weniger gut geeignet, als vieleicht die Pixel. Sprich:
PaintBox1.Canvas.Pixels[x,ax^2 + bx + c] := clred; // Farbe der Linie hier angeben
dann sollte der Fehler mit der überflüssigen Linie (egal, wo die herkommt) eigentlich umgangen sein. Die Funktion könntest auch gut in eine einfache For-Schleife stecken, ala:
for i := 0 to 601 do PaintBox1.Canvas.Pixels[x,ax^2 + bx + c] := clred;
du solltest natürlich darauf achten, dass du nur ganze Zahlen als Argument für die Koordinaten des Pixels übergeben solltest. Du musst also die y-Koordinate am besten mit round- oder trunc-Funktion absichern, wenn du dir nicht sicher bist, ob dies gewährleistet ist.
|