![]() |
Grafikprogrammierung: Raster-Frage
Halle, ich zeichne ein Raster mit folgendem Code auf ein Formular:
Delphi-Quellcode:
So, nun kann man ja nun über die OnMouseDown bzw. OnMouseUp - Prozeduren z.B. ein Rechteck zeichen:
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;
Delphi-Quellcode:
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!
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; Danke MfG hansklok |
Re: Grafikprogrammierung: Raster-Frage
Zitat:
X(neu) = (trunc(mouse.X + (Raster.X / 2)) div Raster.X) * Raster.X; Gruß Matthias |
Re: Grafikprogrammierung: Raster-Frage
Bitte bitte - keine Ursache ....
|
Re: Grafikprogrammierung: Raster-Frage
.,.. danke, im großen und ganzen funktioniert das, nur sind meine objekte nun sehr mausempfindlich, aber danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz