Einzelnen Beitrag anzeigen

Thomas K.

Registriert seit: 13. Jun 2012
2 Beiträge
 
#1

Hilfeersuch Polygon verschieben

  Alt 13. Jun 2012, 23:04
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!

Geändert von Thomas K. (13. Jun 2012 um 23:06 Uhr)
  Mit Zitat antworten Zitat