Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Polygon verschieben??? (https://www.delphipraxis.net/36427-polygon-verschieben.html)

unwissend 19. Dez 2004 21:29


Polygon verschieben???
 
Hallo Leute!

Groooooooooooooßes Problem!

Ich muß unbedingt für einen Beleg ein Polygon erstellen und dieses ist auch noch so in x-Richtung zu verschieben, dass der punkt mit der kleinsten x-Koordinate auf der y-Achse liegt.

Hab auch schon angefangen das Polygon zu zeichnen und zu schließen und zu löschen aber wie zum teufel kann ich das nur verschieben? ich hab keine Ahnung.


Bitte bitte helft mir!!!

bis jetzt bin ich so weit:

var
Form1: TForm1;
xp,yp,xs,ys:array[0..100] of integer;
ss,n: integer;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
for i := 1 to n do
begin
xp[i] := 0;
yp[i] := 0;
end;
end;

procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;
//Polygon erzeugen mit Mausklick
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-1,y-1,x+1,y+1);
image1.canvas.Ellipse(xp[1]-2,yp[1]-2,xp[1]+2,yp[1]+2);
if n>1 then
begin
image1.Canvas.MoveTo(xp[n-1],yp[n-1]);
image1.Canvas.LineTo(xp[n],yp[n]);
if ssAlt in shift then image1.Canvas.LineTo(xp[1],yp[1]);
end;
end;
end;
//Polygon löschen, Koordinaten auf null setzen
procedure TForm1.Lschen1Click(Sender: TObject);
var i:integer;
begin
image1.canvas.Pen.color:=clwhite;
image1.canvas.brush.color:=clwhite;
image1.canvas.brush.Style:=bssolid;
image1.canvas.rectangle(0,0,image1.width,image1.He ight);
image1.canvas.pen.color:=clblack;
n:=0;

for i := 1 to n do
begin
xp[0] := 0;
yp[0] := 0;
end;
end;
// Polygon Schließen, zurück um Ursprung
procedure TForm1.Polygonschlieen1Click(Sender: TObject);
begin
image1.Canvas.LineTo(xp[1],yp[1]);
end;
//Butten zum Befehl Verschieben (ohne Inhalt)
procedure TForm1.ten1Click(Sender: TObject);
var v:integer;
begin

end;
end.


Also bin über jede Idee glücklich.

malo 19. Dez 2004 21:31

Re: Polygon verschieben???
 
Erstmal herzlich willkommen in der DP! :party:

Dann setze bitte mal die Tags, um den Quellcode zu verdeutlichen ;)

Benutze dazu bitte den Edit-Button oben rechts!

unwissend 19. Dez 2004 21:40

Re: Polygon verschieben???
 
Ich hoffe das hilft dir weiter. hab davon nämlich nicht viele ahnung. :pale:

Nikolas 19. Dez 2004 21:46

Re: Polygon verschieben???
 
Poste doch bitte nur den interessanten Teil deines Codes. Die Deklarationen für dein Form sind doch eher nebensächlich. Schau dir mal die Funktion Delphi-Referenz durchsuchendrawpolygon an. Damit kannst du recht einfach mehrere Punkte verbinden lassen. Um dann dein Polygon zu verschieben, reicht es einfach, wenn du in einer Schleife von den Koordinaten jedes Punktes, die Koordinaten des Punktes abziehst, der nachher im Origo liegen soll.

Ps: Zum Überzeichnen ist penmode pmxor sehr hilfreich. Da du mit diesem Stift die Hintergrundfarbe invertierst, kannst du einfach das Polygon doppelt zeichnen und schon ist es wieder weg.

@ Ulimator: Doch eher 'Verschiebungsvektor'

Ultimator 19. Dez 2004 21:46

Re: Polygon verschieben???
 
Du musst dafür sorgen, dass das "alte" Polygon mit der Hintergrundfarbe "übermalt" wird, damit man es nicht mehr sieht, und es dann wieder ganz normal malen, halt mit den um den Verschiebungsfaktor vergrößerten/verkleinerten Koordinaten.

supermuckl 19. Dez 2004 21:47

Re: Polygon verschieben???
 
tja
da du das polygon zeichnest, kannst du es auch nicht verschieben

du müsstest, um es "verschieben zu können" das ganze bild neu zeichnen, mit den neuen koordinaten

du musst also alles temporär speichern ( alle objekte und koodinaten und eigenschaften ) und die dann jedes mal neu auf dein image zeichnen, wenn sich etwas verändert

supermuckl 19. Dez 2004 21:48

Re: Polygon verschieben???
 
ja oder wie es ulti sagt.. aber das geht nur, wenn der hintergrund nicht irgend ein bild war oderso

unwissend 19. Dez 2004 21:53

Re: Polygon verschieben???
 
Mit dem speichern der Koordinaten hab ich mir auch überlegt, weiß aber nicht wie ich dem das verklickere das der die kleinste x- koordinate nimmt.Ich denke das ich diese x Koordinate ja irgendwie in eine Länge umrechnen muß und dann von allen kordinaten abziehen muß. Aber wie?? geht das überhaupt?

Nikolas 19. Dez 2004 21:57

Re: Polygon verschieben???
 
Zitat:

geht das überhaupt?
Mit Delphi fast geht alles.

Mach doch eine Schleife über alle PunktKoordinaten und lass dir den kleinsten ausgeben, etwa so:
Delphi-Quellcode:
min:= ertserPunkt.xkoordinate
for i:= 0 to AnzahlDerPunkte do
  if iterPunk.xKoordinate < min then
      begin
      min:=iterPunk.xKoordinate
      PunktMitKleinsterKoordinate:= i;
      end;
Was willst du wie in welche Länge umrechnen???

unwissend 19. Dez 2004 22:03

Re: Polygon verschieben???
 
Ok. Super Idee. Wenn ich dann den kleinsen x-Wert habe, dann brauch ich doch diese entfernung von 0 zu kleinstem x-Wert um diesen dann von allen koordinaten abziehen zu können. Und da dachte ich ich muß diese entfernung von 0 zur x Koordinate wie eine Länge umrechnen um dann das abzuziehen. ich weiß doch auch nicht :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz