Einzelnen Beitrag anzeigen

Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Mit Mausklicks Koordinaten festlegen

  Alt 30. Jan 2007, 18:02
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
Jürgen Höfs
Jürgen Höfs / picoly.de
  Mit Zitat antworten Zitat