unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 =
class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
PaintBox1: TPaintBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
a,b,c,d,e,f,g,h,k,j,xa,xe,ya,ye,i :Integer;
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
Var i,s,t:integer;
begin
a:=strtoint(edit3.text);
//kleinster x-Wert
b:=strtoint(edit4.text);
//größter x-Wert
c:=strtoint(edit5.text);
//kleinster y-Wert
d:=strtoint(edit6.text);
//größter y-Wert
e:=paintbox1.height;
//Höhe der Paintbox
f:=paintbox1.width;
//Weite der Paintbox
g:=round(f/(b-a));
//Pixel pro Einheit in x-Richtung
k:=round(e/(d-c));
//Pixel pro Einheit in y-Richtung
xa:=0;
//Anfang der x-Achse
//ya:=e div 2;
xe:=f;
//Ende der x-Achse
//ye:=ya;
h:=(-a*g);
//Nullkoordinate x-achse
j:=(d*k);
//Nullkoordinate y-achse
with paintbox1.canvas
do begin
pen.color:=clblue;
Pen.Width:=3;
moveto(xa,j);
lineto(xe,j);
Brush.color:=clred;
//Farbe der Pfeilspitze x-Achse
polygon([point(xe,j),point(xe-10,j+5),point(xe-10,j-5)]);
//Pfeil x-Achse
for i:=0
to ((b-a)-0)
do begin
pen.color:=clgreen;
//Farbe der Striche an der x-Achse
Pen.Width:=3;
moveto(i*g,j);
lineto(i*g,j-10);
//Striche an der x-Achse
end;
moveto(h,e);
lineto(h,0);
Brush.color:=clyellow;
//Farbe der Pfeilspitze y-Achse
polygon([point(h,0),point(h-5,10),point(h+5,10)]);
//Pfeil y-Achse
for i:=0
to ((d-c)-0)
do begin
pen.color:=clblue;
//Farbe der Striche an der y-Achse
Pen.Width:=3;
moveto(h,i*k);
lineto(h+10,i*k);
//Striche an der x-Achse
s:=paintbox1.top;
//Abstand der oberen Kante der Paintbox von oben
t:=paintbox1.left;
//Abstand der linken Kante der Paintbox von links
label7.left:=t+h-g;
//Position von Label7 von Links
label7.top:=s+j+k
div 2;
//Position von Label7 von oben
label7.caption:='
-1';
//Text von Label7
label8.left:=t+h+g;
//Position von Label8 von Links
//label8.top:=j; //Position von Label8 von oben
label8.top:=s+j+k
div 2;
//Position von Label8 von oben
label8.caption:='
+1';
//Text von Label8
label9.left:=t+h-15;
//Position von Label9 von Links
//label8.top:=j; //Position von Label9 von oben
label9.top:=s+j+k-10;
//Position von Label9 von oben
label9.caption:='
-1';
//Text von Label9
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
with paintbox1.canvas
do begin
repaint;
//Löschen der Paintbox
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var m,n,i:integer;
begin
m:=strtoint(edit1.text);
//Anstieg der FKT.
n:=strtoint(edit2.text);
//y-Achsenabschnitt der FKT.
a:=strtoint(edit3.text);
//kleinster x-Wert
b:=strtoint(edit4.text);
//größter x-Wert
c:=strtoint(edit5.text);
//kleinster y-Wert
d:=strtoint(edit6.text);
//größter y-Wert
e:=paintbox1.height;
//Höhe der Paintbox
f:=paintbox1.width;
//Weite der Paintbox
g:=round(f/(b-a));
//Pixel pro Einheit in x-Richtung
k:=round(e/(d-c));
//Pixel pro Einheit in y-Richtung
xa:=0;
//Anfang der x-Achse
xe:=f;
//Ende der x-Achse
h:=(-a*g);
//Nullkoordinate x-achse
j:=(d*k);
//Nullkoordinate y-achse
with paintbox1.canvas
do begin //Zeichnen des Graphen, es geht sicher auch einfacher
moveto(h,(-n*k)+j);
//Bewegung zum Koordinatenursprung
lineto(h+(b*g),j-((m*b*k)+(n*k)));
//Zeichnen nach rechts
moveto(h,(-n*k)+j);
//Bewegung zum Koordinatenursprung
lineto(h-(abs(a)*g),j+(-1)*(-m*(-a)*k)+(-n*k));
//Zeichnen nach links
End;
end;
end.