WPF4とvb.net2010にプロジェクトがあります。
窓の中に帆布があります。ウィンドウは全画面表示ですが、キャンバスはウィンドウの中央で640x480の塗りつぶしに設定されています。キャンバス内でマウスの位置を取得する必要がありますが、ウィンドウ内では取得できません。どうすればよいですか?
WPF4とvb.net2010にプロジェクトがあります。
窓の中に帆布があります。ウィンドウは全画面表示ですが、キャンバスはウィンドウの中央で640x480の塗りつぶしに設定されています。キャンバス内でマウスの位置を取得する必要がありますが、ウィンドウ内では取得できません。どうすればよいですか?
これはうまくいきませんか?
Point p = Mouse.GetPosition(canvas);
マウスポインタの位置は、指定された要素を基準にして計算され、要素の左上隅が原点になります。
こんにちは重要なことは
窓にない
キャンバスもウィンドウの一部です。一例:
...したがって、アプリケーションを起動すると、画面上のマウス位置をピクセル単位で取得する方法を教えてくれるものは何も表示されません。
!警告!juseすると、毎回x0y0Mouse.GetPosition(this);
が返されます
そこで、wpfとWindows.Formsを少し組み合わせて問題を解決しSystem.Windows.Forms.Control.MousePosition
ましたが、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
今、私はそれをこのようにjuseすることができます:
Dim MousPos As Point = System.Windows.Forms.Control.MousePosition.toWfpPoint