WPF 4とvb.net 2010にプロジェクトがあります。
窓の中にキャンバスがあります。ウィンドウは全画面表示ですが、キャンバスはウィンドウの中央が塗りつぶされた640x480に設定されています。キャンバス内でマウスの位置を取得する必要がありますが、ウィンドウ内では取得できません。どうすればよいですか?
これは機能しませんか?
Point p = Mouse.GetPosition(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