Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Punkte verbinden zu einem Polygon

  Alt 19. Apr 2007, 13:24
n muss man nicht auf 0 setzen, da es eine globale Variable ist. die wird automatisch beim Programmstart auf 0 gesetzt.

Hast du die Version mit Polyline oder mit Polygon benutzt? Ich habe das nochmal im Edit umgestellt gehabt.

Delphi-Quellcode:
implementation

{$R *.dfm}

var
  N: integer;
  Points: array of TPoint;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if button = mbleft then
  begin
    Image1.Canvas.Brush.Color := clBlack;
    Image1.Canvas.FrameRect(Rect(x-7, y-7, x+7, y+7));
    n := n+1;
    SetLength(Points, n);
    Points[n-1].X := X;
    Points[n-1].Y := Y;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  Image1.Canvas.Brush.Color := clWhite;
  Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
  Image1.Canvas.Pen.Color := clBlue;
  Image1.Canvas.Brush.Color := clGreen;
  Image1.Canvas.Polygon(Points);
  Image1.Canvas.Brush.Color := clBlack;
  for I := 0 to Length(Points) - 1 do
    Image1.Canvas.FrameRect(Rect(Points[I].x-7,Points[I].y-7,Points[I].x+7,Points[I].y+7));
end;

end.
Hier mal die getestete Version mit Polygon.
Verbesserungen: Farbe setzen, damit man sieht was bei einem Polygon innen und aussen ist. Trennung in Punkte setzen und Polygon malen. Beim Malen des Polygons wird das Image geloescht und die Punkte nach dem Polygon nochmals gemalt, damit sie vor dem Polygon erscheinen. Die Punkte werden nur als Umriss gemalt, damit man die Ecken des polygons nicht ueberdeckt.
  Mit Zitat antworten Zitat