我有一个WPF 4和vb.net 2010的项目。
在窗口中有一个画布。窗口是全屏的,但是画布在窗口中心设置为固定的640x480。我需要获取画布内鼠标的位置,而不是窗口内的位置。如何实现?
我有一个WPF 4和vb.net 2010的项目。
在窗口中有一个画布。窗口是全屏的,但是画布在窗口中心设置为固定的640x480。我需要获取画布内鼠标的位置,而不是窗口内的位置。如何实现?
这行代码不起作用吗?
Point p = Mouse.GetPosition(canvas);
鼠标指针的位置是相对于指定元素计算的,其中该元素的左上角是原点。
您好,重要的是要注意:
不在窗口上
Canvas 也是窗口的一部分。 以下是一个例子:
... 因此,如果您启动应用程序,将看不到任何东西 现在告诉我如何以像素为单位获取屏幕上的鼠标位置。
!警告!如果您使用 Mouse.GetPosition(this);
,每次都会返回 x0 y0
所以我通过使用System.Windows.Forms.Control.MousePosition
解决了这个问题,它是wpf和Windows.Forms的混合体,但我已经放弃了xD。
抱歉大声喊出来:/
为了让自己更容易,我做了一个扩展:
<DebuggerHidden> _
<System.Runtime.CompilerServices.Extension> _
Public Function toWfpPoint(p As System.Drawing.Point) As Point
Return new Point(p.X, p.Y)
End Function
Dim MousPos As Point = System.Windows.Forms.Control.MousePosition.toWfpPoint