Hallo,
das ist das erste delphi forum dass ich besuche und da ich Anfänger ich hoffe dass ich mit meiner banalen Frage hier richtig bin .
Es geht wie der Titel schon sagt darum dass ich in einer PaintBox ein Koordinatensystem und darin Funktionsgraphen auf basis von vom benutzer eingestellten parametern zeichnen will.
Da ich aufgrund des problems keine weiteren funktionen als die 2. grades in die auswahl mit reingenommen habe,geht es nur um eben diese.
nachdem ich die x-,y-Achse und die Einteilung gemacht habe ,habe ich mich daran gemacht den graph mit hilfe von jedem pixel einzeln zu zeichnen.
das funktioniert soweit auch ganz gut ,nur dass die graphen nur bis zu einem bestimmten Punkt im Koordinatensystem gezeichnet werden udn dann abbrechen,als ob eine unsichtbare barriere delphi daran hindern würde weiter zu zeichnen,egal wie oft ich delphi die schleife ,in der die anweisung zum zeichnen steht , durchlaufen lasse. hier der code: for k := -200 to 200 do
begin
x := 200 + k;
y := (((Power(k / Abschnitt,2)) * Grad2) + ((k / Abschnitt) * Grad1) + Grad0) * Abschnitt;
Pixels[200 + k,round(200 - y)] := clGreen;
TextOut(100,100,IntToStr(200 +k));
TextOut(140,100,IntToStr(round(200 - y)));
sleep(100);
falls es von relevanz ist hier der rest des programms :
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
z : Integer;
begin
with PaintBox1.Canvas do
begin
// y-Achse zeichnen :
MoveTo(200,0);
LineTo(200,400);
// x-Achse zeichnen :
MoveTo(0,200);
LineTo(400,200);
// y-Achse einteilen :
for i := 0 to 20 do
begin
MoveTo(200,i* Abschnitt);
LineTo(190,i* Abschnitt);
if i <> 10 then
TextOut(185,i*Abschnitt,IntToStr(400 div Abschnitt div 2 - i));
end;
// x-Achse einteilen :
for z := 0 to 20 do
begin
MoveTo(z * Abschnitt,200);
LineTo(z * Abschnitt,210);
if z <> 10 then
TextOut(z* Abschnitt,215,IntToStr(z - 400 div Abschnitt div 2));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
//var
//recta : TRect;
begin
Abschnitt := 50;
//with PaintBox1.Canvas do
//begin
//recta := Rect(0,0,400,400);
//brush.color := clwhite;
//FillRect(recta);
//end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
k : Integer;
begin
with PaintBox1.Canvas do
begin
try
Grad2 := StrToFloat(Edit1.Text) ;
except
Grad2 := 0;
end;
try
Grad1 := StrToFloat(Edit2.Text);
except
Grad2 := 0;
end;
try
Grad0 := StrToFloat(Edit3.Text);
except
Grad0 := 0;
end;
das ist das erste delphi forum dass ich besuche und da ich Anfänger ich hoffe dass ich mit meiner banalen Frage hier richtig bin .
Es geht wie der Titel schon sagt darum dass ich in einer PaintBox ein Koordinatensystem und darin Funktionsgraphen auf basis von vom benutzer eingestellten parametern zeichnen will.
Da ich aufgrund des problems keine weiteren funktionen als die 2. grades in die auswahl mit reingenommen habe,geht es nur um eben diese.
nachdem ich die x-,y-Achse und die Einteilung gemacht habe ,habe ich mich daran gemacht den graph mit hilfe von jedem pixel einzeln zu zeichnen.
das funktioniert soweit auch ganz gut ,nur dass die graphen nur bis zu einem bestimmten Punkt im Koordinatensystem gezeichnet werden udn dann abbrechen,als ob eine unsichtbare barriere delphi daran hindern würde weiter zu zeichnen,egal wie oft ich delphi die schleife ,in der die anweisung zum zeichnen steht , durchlaufen lasse. hier der code: for k := -200 to 200 do
begin
x := 200 + k;
y := (((Power(k / Abschnitt,2)) * Grad2) + ((k / Abschnitt) * Grad1) + Grad0) * Abschnitt;
Pixels[200 + k,round(200 - y)] := clGreen;
TextOut(100,100,IntToStr(200 +k));
TextOut(140,100,IntToStr(round(200 - y)));
sleep(100);
falls es von relevanz ist hier der rest des programms :
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
z : Integer;
begin
with PaintBox1.Canvas do
begin
// y-Achse zeichnen :
MoveTo(200,0);
LineTo(200,400);
// x-Achse zeichnen :
MoveTo(0,200);
LineTo(400,200);
// y-Achse einteilen :
for i := 0 to 20 do
begin
MoveTo(200,i* Abschnitt);
LineTo(190,i* Abschnitt);
if i <> 10 then
TextOut(185,i*Abschnitt,IntToStr(400 div Abschnitt div 2 - i));
end;
// x-Achse einteilen :
for z := 0 to 20 do
begin
MoveTo(z * Abschnitt,200);
LineTo(z * Abschnitt,210);
if z <> 10 then
TextOut(z* Abschnitt,215,IntToStr(z - 400 div Abschnitt div 2));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
//var
//recta : TRect;
begin
Abschnitt := 50;
//with PaintBox1.Canvas do
//begin
//recta := Rect(0,0,400,400);
//brush.color := clwhite;
//FillRect(recta);
//end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
k : Integer;
begin
with PaintBox1.Canvas do
begin
try
Grad2 := StrToFloat(Edit1.Text) ;
except
Grad2 := 0;
end;
try
Grad1 := StrToFloat(Edit2.Text);
except
Grad2 := 0;
end;
try
Grad0 := StrToFloat(Edit3.Text);
except
Grad0 := 0;
end;
Comment