Top > Programming > .NetFramework > WPF > Transform > CautionAboutScaleTransform
Last-modified: Mon, 08 Apr 2013 04:35:44 JST
Counter:2266 Today:1 Yesterday:0 Online:2
このエントリーをはてなブックマークに追加

ScaleTransformによって拡大縮小されたコントロールの注意

取得できる座標は変換済みになる

例えばScaleTransformを利用して左下を原点とするコントロールを作った場合に、MouseEventArgs.GetPositionメソッドなどによって得られる座標はどうなるか、が気になります。

左下が原点となるコントロールを作る場合には、コントロールの中心を原点にY方向のScaleを-1倍すればよいわけですが、変換されたコントロール上で、マウスが左下にある時、その座標(MouseEventArgs.GetPosition)は(0,0)になります。見かけ上は(0,Height)となりそうですが、実際には(0,0)となっています。

異なるScaleTransform、例えば左右対称になるようなTransformの場合にも同様の現象が起きると思われます。

LayoutTransformでもRenderTransformでも同様の仕様であることが確認できました。