Halle, ich zeichne ein Raster mit folgendem Code auf ein Formular:
Delphi-Quellcode:
begin
X:= 25;
repeat
Y:= 25;
repeat
with Form1.Canvas do begin
Pen.Color:= clBlack;
Pen.Style:= psSolid;
MoveTo(X, Y);
LineTo(X+1, Y);
end;
Y:= Y + Raster.Y;
until Y > Form1.Width;
X:= X + Raster.X;
until X > Form1.Width;
end;
So, nun kann man ja nun über die OnMouseDown bzw. OnMouseUp - Prozeduren z.B. ein Rechteck zeichen:
Delphi-Quellcode:
var
Form1: TForm1;
x1,y1: Integer;
...
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1:= x;
y1:= y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
canvas.Rectangle(x1,y1,x,y);
end;
So, nun möchte ich, dass wenn der Startpunkt (x1,y1) in der Nähe eines Rasterpunktes, eventuell mit einer Toleranz von +-3 Pixel von dem jeweiligen Rasterpunkt automatisch an den jeweiligen Rasterpunkt gezeichnet wird. Sozusagen magnetisch an einen Rasterpunkt angezogen und sich dort die Startkoordinaten des Rechteckes befinden. Leider habe ich nicht so recht eine Idee, wie ich das realisieren könnte. Kann mir bitte jemand weiterhelfen!
Danke
MfG
hansklok