unit info2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
PaintBox1: TPaintBox;
laenge: TEdit;
abstand: TEdit;
Reset: TButton;
procedure PaintBox1Click(Sender: TObject);
procedure laengeChange(Sender: TObject);
procedure abstandChange(Sender: TObject);
procedure ResetClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
laenge1:integer;
abstand1:integer;
PunktA :
array[0..600]
of record
x,y:integer ;
end;
PunktB :
array[0..600]
of record
x,y:integer ;
end;
Pixel :
array[0..600]
of record
x,y:integer;
end;
implementation
{$R *.dfm}
procedure TForm1.laengeChange(Sender: TObject);
begin
laenge1:=strtoint(laenge.Text);
end;
procedure TForm1.abstandChange(Sender: TObject);
begin
abstand1:=strtoint(abstand.Text);
end;
procedure TForm1.PaintBox1Click(Sender: TObject);
var
laufvar:integer;
begin
with paintbox1.Canvas
do begin
pen.color:=(clblack);
moveto(20,580);
lineto(20,20);
moveto(20,580);
lineto(580,580);
textout(580,585,'
x');
textout(10,10,'
y');
laufvar:=0;
PunktA[0].x:=20;
//fester Wert
PunktA[0].y:=580-laenge1;
PunktB[0].x:=20;
PunktB[0].y:=580;
//ferster Wert
Pixel[0].x:=20;
Pixel[0].y:=580-laenge1+abstand1;
repeat
inc(laufvar,1);
PunktA[laufvar].y:=PunktA[laufvar-1].y+1;
PunktA[laufvar].x:=20;
PunktB[laufvar].x:=20+round(sqrt(sqr(laenge1)-(sqr(580-PunktA[laufvar].y))));
PunktB[laufvar].y:=580;
Pixel[laufvar].x:=PunktA[laufvar].x+round((abstand1/laenge1)*(PunktB[laufvar].x-PunktA[laufvar].x));
Pixel[laufvar].y:=PunktA[laufvar].y+round((abstand1/laenge1)*(PunktB[laufvar].y-PunktA[laufvar].y));
Pixels[Pixel[laufvar].x,Pixel[laufvar].y]:=clblack;
moveto(Pixel[laufvar].x,Pixel[laufvar].y);
lineto(Pixel[laufvar-1].x,Pixel[laufvar-1].y);
until PunktA[laufvar].y>579;
end;
end;
procedure TForm1.ResetClick(Sender: TObject);
var laufvar:integer;
begin
with paintbox1.Canvas
do begin
pen.color:=(clbtnface);
laufvar:=0;
PunktA[0].x:=20;
//fester Wert
PunktA[0].y:=580-laenge1;
PunktB[0].x:=20;
PunktB[0].y:=580;
//ferster Wert
repeat
inc(laufvar,1);
PunktA[laufvar].y:=PunktA[laufvar-1].y+1;
PunktA[laufvar].x:=20;
PunktB[laufvar].x:=20+round(sqrt(sqr(laenge1)-(sqr(580-PunktA[laufvar].y))));
PunktB[laufvar].y:=580;
moveto(20,PunktA[laufvar].y);
lineto(PunktB[laufvar].x,580);
until PunktA[laufvar].y=580;
pen.color:=(clblack);
moveto(20,580);
lineto(20,20);
moveto(20,580);
lineto(580,580);
textout(580,585,'
x');
textout(10,10,'
y');
end;
end;
end.