Hm..
Also ich habe dein Vorschlag übernommen jedoch stimmen die Werte immernoch nicht
überrein...Nun haut er irgendwie die Werte durcheinander...glaub ich jedenfalls auf die schnelle
Also ich möchte immer den linken oberen Punkt und den rechten unteren Punkt ausgegeben haben.
Egal für welches Rechteck
Oder eben den rechten oberen Punkt und den linken unteren..
Nach deiner Lösung würde das ganze nun wie folgt aussehen:
Delphi-Quellcode:
var
Form1: TForm1;
a1,a2,a,aa,x2,y2:integer;
implementation
{$R *.dfm}
procedure SwapInteger(var a, b : Integer); // Hilfsfunktion
var
t : Integer;
begin
t := a;
a := b;
b := t;
end;
procedure zeichneRechteck(canv: Tcanvas; x1, y1,x2,y2: integer; farbeRand:Tcolor);
const dicke = 3;
begin
with canv do Begin
Pen.Width := dicke;
Pen.Color := farbeRand;
Brush.Style := bssolid;
Pen.Mode:=pmNotXor;
x1:=random(200);
y1:=x1;
x2:=random(200);
y2:=x2 div 2;
if x1 > x2 then
SwapInteger(x1, x2); // Tausche X-Koordinaten
if y2 > y1 then
SwapInteger(y1, y2);
Rectangle (x1 -dicke, y1-dicke, x2-dicke, y2 - dicke);
a:=x1;
aa:=y1;
a1:=x2;
a2:=y2;
End
end;
procedure TForm1.Button1Click(Sender: TObject);
var w, h,w2,i,n:integer;
begin
randomize;
n:=strtoint(form1.Edit1.text);
sg1.ColCount :=2;
sg1.RowCount :=n+1;
for i:=1 to n do begin
with image1 do begin
zeichneRechteck(image1.canvas,a, aa, a1,a2,clgray);
label1.Caption:= inttostr(a)+(',')+inttostr(aa)+(',')+inttostr(a1)+(',')+inttostr(a2);
end;
sg1.Cells[0,i]:=inttostr(a)+(',')+inttostr(aa);
sg1.Cells[1,i]:=inttostr(a1+a)+(',')+inttostr(a2+aa);
end;
end;
end.