Hallo Boardmitglieder,
ich versuche seit nunmehr sechs Stunden in Delphi (3 davon in der Uni, 3 davon mit der Demo zuhaus) ein Problem für unseren Informatikbeleg zu lösen.
In der Hoffnung mein Problem wurde nicht bereits irgendwo diskutiert, muss ich euch mal mit sowas einfachen für euch langweilen.
Der erste Teil der Aufgabe lautet: ein Formular zu gestalten in das man ein
Polygon einzeichnen kann.
Dass ist erst mal nicht das Problem, da hab ich folgenden Quelltext geschrieben
Delphi-Quellcode:
procedure Tform1.Button2Click(sender: TObject);
var
i:integer;
for i:=1 to n-1 do
begin
image1.canvas.moveto(xp[i],yp[i];
image1.canvas.lineto(xp[i+1]myo[i+1]);
end;
image1.canvas.Moveto(xp[n],yp[n]);
image1.canvas.lineto(xp[1],yp[1]);
end;
Das Setzen der Punkte hab ich mittels folgender OnMouseDown Variante gelöst:
Delphi-Quellcode:
procedure Tform1.image1mousedown(sender:tobject;
button:Tmousebutton;
shift: Tshiftstate;
x,y: Integer);
begin
if button=mbleft then
begin
n:=n+1;
xp[n]:=x;
yp[n]:=y;
image1.canvas.rectangle(x-3,y-3,x+3,y+3);
Das eigentliche Problem kommt nun:
Ich kann ja nun ein
Polygon wunderbar zeichnen, indem ich die Punkte setze und anschließend auf den Polygonzeichnen-Button klicke.
Ich soll nun im zweiten Aufgabenteil Delphi einen
Punkt vorgeben (dachte an sowas wie TEdit also x und y Koordinaten) und Delphi soll das gesamte
Polygon so verschieben, dass der erste
Punkt des vorher gezeichneten Polygons dieser von mir eingegebene
Punkt wird. Das
Polygon soll aber stehenbleiben und ich muss es dann noch farbig unterscheiden - wobei letzteres glaub ich nicht so kompliziert ist.
Bitte helft mir, ich verstehe die Mathematik dahinter also
a=xp-x1, und b=yp-y1
wobei dann gilt xi'=xi+a
yi'=yi+b
für i=i-n
aber ich hab keine Ahnung, wie man das Delphi sagt. Könntet ihr mir bitte die Funktion die das ausführt und den Quellcode dafür aufschreiben.
Dankeschön!