Thread Tkx-canvasx liefert nur Integer-Werte (4 answers)
Opened by dimpflmoser at 2011-02-25 11:42

MatthiasW
 2011-03-01 18:09
#146158 #146158
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Wie Dubu schon schrieb sind die Zeichnungseinheiten eines Canvas Pixel. Bei skalierten Objekten werden zwar deren Koordinaten umgerechnet und man erhält Fließkommazahlen, der Mauszeiger kann jedoch auch im Canvas immer nur auf einer ganzzahligen Position stehen.

Vermutlich möchtest du die Koordinaten zurückrechnen? Dazu musst du die Mausposition mit dem Verhältnix der alten zur neuen Länge in X- bzw. Y-Richtung multiplizieren. Zuvor solltest du das Offset des Objekts von der Mausposition abziehen.

Es müsste in etwa so funktionieren: (Rechteck)
Code (perl): (dl )
1
2
3
4
5
# $real_*   = echte Koordinaten
# $scaled_* = skalierte Koordinaten

my $obj_x = ($c->canvasx($x) - $scaled_left) * ($real_right - $real_left) / ($scaled_right - $scaled_left);
my $obj_y = ($c->canvasy($y) - $scaled_top ) * ($real_down  - $real_top ) / ($scaled_down  - $scaled_top );

MfG

Editiert von MatthiasW: falsche y-Koordinate subtrahiert..

Editiert von MatthiasW: Berechnung der Y-Koordinate durcheinander gebracht..
Last edited: 2011-03-01 19:46:43 +0100 (CET)
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread Tkx-canvasx liefert nur Integer-Werte