AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Polygon verschieben???

Ein Thema von unwissend · begonnen am 19. Dez 2004 · letzter Beitrag vom 19. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
unwissend

Registriert seit: 19. Dez 2004
6 Beiträge
 
#1

Polygon verschieben???

  Alt 19. Dez 2004, 21:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#2

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:31
Erstmal herzlich willkommen in der DP!

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

Benutze dazu bitte den Edit-Button oben rechts!
  Mit Zitat antworten Zitat
unwissend

Registriert seit: 19. Dez 2004
6 Beiträge
 
#3

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:40
Ich hoffe das hilft dir weiter. hab davon nämlich nicht viele ahnung.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:46
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'
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:46
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.
Julian J. Pracht
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:47
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
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:48
ja oder wie es ulti sagt.. aber das geht nur, wenn der hintergrund nicht irgend ein bild war oderso
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
unwissend

Registriert seit: 19. Dez 2004
6 Beiträge
 
#8

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:53
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?
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Polygon verschieben???

  Alt 19. Dez 2004, 21:57
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???
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
unwissend

Registriert seit: 19. Dez 2004
6 Beiträge
 
#10

Re: Polygon verschieben???

  Alt 19. Dez 2004, 22:03
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz