![]() |
Delphi zeichnet nicht :(
hallo,
ich hab nen problem mit delphi... ich will ne parabel zeichnen doch delphi hat anscheinend was dagegen... Ich hab bereits in nem anderen Prog mit der gleichen Funktion gezeichnet und da hats funktioniert... :wall: ich geb euch mal den Code vllt findet ihr ja den Fehler... ich und meine freunde finden ihn nicht :(
Delphi-Quellcode:
diese Funktion wird auch aufgerufen das hab ich schon kontroliert...
procedure TFAbbParabol.linie (x1,y1,x2,y2 : Integer);
begin FAbbParabol.PaintBox1.Canvas.MoveTo(x1,y1); FAbbParabol.PaintBox1.Canvas.LineTo(x2,y2); end; function TFAbbParabol.Parabel(brennweite:Integer):TPoint; var Scheitelpunkt,Brennpunkt,Startpunkt,Endpunkt,Begrenzungoben,Begrenzungunten:TPoint; a,zahl :Double; begin Paintbox1.Canvas.Pen.Width:=5; Paintbox1.Canvas.Pen.Color:=clblack; //Scheitelpunkt Scheitelpunkt.X:=Clientwidth * 9 div 10; Scheitelpunkt.Y:=Clientheight *2 div 3; //Brennpunkt Brennpunkt.X:=Scheitelpunkt.X-brennweite; Brennpunkt.Y:=Scheitelpunkt.Y; //Begrenzung Begrenzungoben.X:=clientwidth * 3 div 4; Begrenzungoben.Y:=scheitelpunkt.Y - clientheight div 4; Begrenzungunten.X:=Begrenzungoben.X; Begrenzungunten.Y:=scheitelpunkt.Y + clientheight div 4; //Parabel zeichnen a:=1/(4*brennweite); Startpunkt.Y:=0; Startpunkt.X:=0; Linie(Scheitelpunkt.X,Scheitelpunkt.Y,Scheitelpunkt.X,Scheitelpunkt.Y); zahl:=0; //Oben repeat //x=-1*a*y*y zahl:=zahl+1; Endpunkt:=Startpunkt; dec(Startpunkt.Y); Startpunkt.X:=round(Startpunkt.Y*Startpunkt.Y*(-1)*(a)); linie(Startpunkt.X+Scheitelpunkt.X,Startpunkt.Y+Scheitelpunkt.Y,Endpunkt.X+Scheitelpunkt.X,Endpunkt.Y+Scheitelpunkt.Y); until (Startpunkt.Y+Scheitelpunkt.Y<Begrenzungoben.Y) or (Startpunkt.X+Scheitelpunkt.X<Begrenzungoben.X); //Unten Startpunkt.Y:=0; Startpunkt.X:=0; repeat Endpunkt:=Startpunkt; inc(Startpunkt.Y); Startpunkt.X:=round(Startpunkt.Y*Startpunkt.Y*(-1)*(a)); linie(Startpunkt.X+Scheitelpunkt.X,Startpunkt.Y+Scheitelpunkt.Y,Endpunkt.X+Scheitelpunkt.X,Endpunkt.Y+Scheitelpunkt.Y); until (Startpunkt.Y+Scheitelpunkt.Y>Begrenzungunten.Y) or (Startpunkt.X+Scheitelpunkt.X<Begrenzungunten.X); result:=Brennpunkt; end; danke im vorraus |
Re: Delphi zeichnet nicht :(
Stimmen denn auch die Koordinaten? Also liegen die überhaupt im sichtbaren bereich deiner Paintbox? Hast du den Code schon mal debuggt?
|
Re: Delphi zeichnet nicht :(
jo...is gedebuggt und die Paintbox ist eig auf maximalgröße... und die Koords müssten super drin liegen....
Delphi-Quellcode:
procedure TFAbbParabol.FormResize(Sender: TObject);
begin windowstate:=wsmaximized; FAbbParabol.Width:=screen.Width; FAbbParabol.Height:=screen.Height; PaintBox1.Height:=ClientHeight; PaintBox1.width:=Clientwidth; end; |
Re: Delphi zeichnet nicht :(
Und wenn Du die benannte Instanz mal weglässt?
Delphi-Quellcode:
procedure TFAbbParabol.linie (x1,y1,x2,y2 : Integer);
begin {FAbbParabol.}PaintBox1.Canvas.MoveTo(x1,y1); {FAbbParabol.}PaintBox1.Canvas.LineTo(x2,y2); end; |
Re: Delphi zeichnet nicht :(
hat ich vorher und da gings auch nicht...
|
Re: Delphi zeichnet nicht :(
Du rufst Parabel im OnPaint der Paintbox auf?
|
Re: Delphi zeichnet nicht :(
Ich habe auf den ersten Blick keinen Fehler gesehen und hab es in eine Testanwendung kopiert.
- eine PaintBox auf das Formular - ein Button auf das Formular - die Eigenschaft Align der PaintBox auf alClient gesetzt
Delphi-Quellcode:
...funktioniert
procedure TForm1.Button1Click(Sender: TObject);
begin Parabel(10); end; procedure TForm1.linie (x1,y1,x2,y2 : Integer); begin PaintBox1.Canvas.MoveTo(x1,y1); PaintBox1.Canvas.LineTo(x2,y2); end; ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz