Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Mit Mausklicks Koordinaten festlegen (https://www.delphipraxis.net/85421-mit-mausklicks-koordinaten-festlegen.html)

Fransoir 30. Jan 2007 16:30


Mit Mausklicks Koordinaten festlegen
 
Hallo Leute, bin neu im Gebiet Delphi und habe kaum Programmierkenntnisse. Und zwar folgendes. Ich möchte ein Polygon zeichnen. Die Punkte bzw. Koordinaten, werden durch Mausklicks festgelegt. Hier ein kleines Bsp.: Ein Polygon mit fünf Seiten. 1. Klick wird der Startpunkt festgelegt, mit dem zweiten Klick wird ein zweiter Punkt gesetzt und durch eine Linie verbunden. Wenn ich jetzt das dritte mal klicke, soll zu dem dritten Punkt vom zweiten Punkt eine weitere Linie gezogen werden usw. Wie mache ich das. Ich habe es derzeit schon soweit, und das für ein Neuling, dass wenn ich klicke ein Linie entsteht, wobei die Koordinaten des Startpunktes fest eingegeben sind.

Pfoto 30. Jan 2007 17:02

Re: Mit Mausklicks Koordinaten festlegen
 
Hallo!

Ich habe kein .NET, daher ist der folgende Code für W32,
aber vom Prinzip her ist das ja ähnlich.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PaintBox1Paint(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Points: array of TPoint;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  SetLength(Points, length(Points)+1);
  Points[length(Points)-1].X:= X;
  Points[length(Points)-1].Y:= Y;
  PaintBox1.Invalidate;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  If length(Points) = 0 then exit;
  with Sender as TPaintBox do
  begin
    Canvas.Pen.Color := clBlack;
    Canvas.Polyline(Points);
  end;
end;

end.
Du erweiterst bei jedem Klick ein Array von TPoint (bei .NET wird's wohl anders heißen)

Dann sagst du der Zeichenbox (hier: TPaintBox), sie soll
sich aktualisieren.
Dann übergibst du die "gesammelten" Koordinaten an eine
Polygon-Zeichenfunktion (hier: Polyline)

Willst du neu zeichen oder den letzen Punkt löschen,
löschst du den ensprechenden Eintrag im Array (bzw. alles)



Gruß
Pfoto

Fransoir 30. Jan 2007 17:12

Re: Mit Mausklicks Koordinaten festlegen
 
Danke für den Aufabu, jedoch meine Frage wofür ist der Button und warum werden bei mir keine Linien gezeichnet. P.S. Sorry habe doch WIN32 war nur ein verklicker. :roll:

Pfoto 30. Jan 2007 17:17

Re: Mit Mausklicks Koordinaten festlegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Der Button ist nun weg -- hatte keine Bedeutung.


Ich habe dir mal eine kleine Projektdatei gemacht,
du findest sie im Anhang (erstellt mit Delphi 7)

Gruß
Pfoto

Fransoir 30. Jan 2007 17:26

Re: Mit Mausklicks Koordinaten festlegen
 
EY Super,

ich danke dir. Sag mal wo kann man solche sehr guten Kenntnisse erwerben.

P.S. Super Homepage und coole Fotos :o)

Pfoto 30. Jan 2007 17:35

Re: Mit Mausklicks Koordinaten festlegen
 
Zitat:

Zitat von Fransoir
Sag mal wo kann man solche sehr guten Kenntnisse erwerben.

Leider bin ich kein studierter Programmierer -- aber ich versuche
seit ca. 1 Jahr mir intesiv die wichtigsten Sachen beizubringen.

Vieles habe ich hier im Forum gelernt -- und es sollte das Prinzip
eines Forums sein, dass man dann irgendwann auch weiterhilft -- sofern man kann...

Gruß
Pfoto


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.

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