AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Grafikprogrammierung: Raster-Frage

Grafikprogrammierung: Raster-Frage

Ein Thema von hansklok · begonnen am 25. Okt 2006 · letzter Beitrag vom 26. Okt 2006
Antwort Antwort
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#1

Grafikprogrammierung: Raster-Frage

  Alt 25. Okt 2006, 13:18
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
  Mit Zitat antworten Zitat
mbamler

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

Re: Grafikprogrammierung: Raster-Frage

  Alt 25. Okt 2006, 13: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
mbamler

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

Re: Grafikprogrammierung: Raster-Frage

  Alt 26. Okt 2006, 12:43
Bitte bitte - keine Ursache ....
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#4

Re: Grafikprogrammierung: Raster-Frage

  Alt 26. Okt 2006, 17:03
.,.. danke, im großen und ganzen funktioniert das, nur sind meine objekte nun sehr mausempfindlich, aber danke!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf