Entwickler-Ecke

Multimedia / Grafik - Koordinatenproblem - Linie zeichnen


Roux - Sa 28.06.08 15:22
Titel: Koordinatenproblem - Linie zeichnen
Hi!
Ich habe ein TImage Objekt mit einem Bild und dazu 2 Proceduren (MouseMove vom TImage und OnClick vom TImage):
(Hinweis: X2 und Y2 sind 2 globale Variablen vom Typ Integer)

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.WKClick(Sender: TObject);
begin
  WK.Canvas.MoveTo(0,0);
  WK.Canvas.LineTo(X2,Y2);
  
end;

procedure TForm1.WKMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  X2 := X;
  Y2 := Y;
end;


Wenn ich auf die Karte Klicke, sollte er doch vom 0;0 Punkt aus eine Linie ziehen zu den Punkt den ich angeklickt habe, oder nicht? Er machts jedenfalls nicht, die Linie ist immer zu kurz.

Roux


Jakob_Ullmann - Sa 28.06.08 15:35

Kommt drauf an. Wenn das Bild ungestretcht vorliegt dann ja, aber ich vermute, dass du dein Bild kleiner gestretcht hast. Denn bei Canvas geht es um Bildpunkte, bei Mäusen dagegen um Pixel. :wink:


Delphi-Quelltext
1:
2:
3:
4:
factorX := WK.Picture.Width / WK.Width;    // factorX: Single;
factorY := WK.Picture.Height / WK.Heighth; // factorY: Single;
WK.Canvas.MoveTo(00);
WK.Canvas.LineTo(round(X2 * factorX), round(Y2 * factorY));


Roux - Sa 28.06.08 15:40

Achso, das sind Bildpunkte, Danke :)