我在WPF 4和vb.net 2010中有一个项目。
我在窗户内有画布。窗口是全屏,但画布在窗口中央设置为实心640x480。我需要在画布内部获取鼠标位置,但不要在窗口内部。我该怎么做?
答案 0 :(得分:43)
这不起作用吗?
Point p = Mouse.GetPosition(canvas);
鼠标指针的位置是 相对于指定的计算 元素的左上角 元素是起源点,
答案 1 :(得分:2)
嗨重要的是
不在窗口
画布也是窗口的一部分。 一个例子:
... 因此,如果您启动该应用程序,您将看到Nothing 现在告诉我如何在像素
的屏幕上获得鼠标位置 !警告!
如果你juse Mouse.GetPosition(this);
,它每次都会返回x0 y0
答案 2 :(得分:1)
所以我使用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