Einzelnen Beitrag anzeigen

mbamler

Registriert seit: 19. Mai 2005
Ort: Hamburg
118 Beiträge
 
Delphi 7 Architect
 
#2

Re: Grafikprogrammierung: Raster-Frage

  Alt 25. Okt 2006, 14:33
Zitat von hansklok:
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
Deine gewünschte X-Koordinate berechnet sich wie folgt (mit Y ist es analog das gleiche):

X(neu) = (trunc(mouse.X + (Raster.X / 2)) div Raster.X) * Raster.X;

Gruß
Matthias
  Mit Zitat antworten Zitat