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)
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"'