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