我该如何获取经过变换的WPF控件上鼠标单击位置的坐标?

3
我正在使用一个简单的WPF应用程序。其中一部分包含一个包含多个控件的网格。该网格使用LayoutTransform和RotateTransform进行旋转。我需要获取相对于网格左上角的鼠标点击坐标,考虑到旋转。
为了清楚起见,假设在网格中只有一个绘图表面,且未应用任何变换。然后,我在位置X = 20,Y = 10处单击并在绘图表面上放置一个点。如果现在将网格旋转30度并单击该点(该点也随着旋转移动),则单击位置仍应为X = 20,Y = 10。
1个回答

5

MouseEventArgs有一个GetPosition方法,需要传入一个UIElement。它返回鼠标事件相对于指定元素的位置。因此,如果你想将鼠标点击转换为网格的坐标,请将该网格传递给GetPosition方法。


太好了!我实际上正在使用MouseDown,但MouseButtonEventArgs也有这个方法。我以前肯定试过这个,但我的大脑一定是在自动驾驶模式下。非常感谢。 - BlackWasp
也许我在网格中旋转了某些东西并检查了网格。这可能是一些愚蠢的错误。 - BlackWasp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接