21

WPF4とvb.net2010にプロジェクトがあります。

窓の中に帆布があります。ウィンドウは全画面表示ですが、キャンバスはウィンドウの中央で640x480の塗りつぶしに設定されています。キャンバス内でマウスの位置を取得する必要がありますが、ウィンドウ内では取得できません。どうすればよいですか?

4

3 に答える 3

54

これはうまくいきませんか?

Point p = Mouse.GetPosition(canvas);

マウスポインタの位置は、指定された要素を基準にして計算され、要素の左上隅が原点になります。

于 2011-04-17T01:16:17.013 に答える
2

こんにちは重要なことは

窓にない

キャンバスもウィンドウの一部です。一例:

  • Window.AllowsTransparency状態がtrueになっている
  • Window.Backgroundは#00000000(完全に透過的)です
  • Window.StyleはNoneです
  • Window.Stateが最大化され、
  • ウィンドウにはコントロールや要素はありません!

...したがって、アプリケーションを起動すると、画面上のマウス位置をピクセル単位で取得する方法を教えてくれるものは何も表示されません。

!警告!juseすると、毎回x0y0Mouse.GetPosition(this);が返されます

于 2013-03-28T17:04:15.837 に答える
1

そこで、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

今、私はそれをこのようにju​​seすることができます:

Dim MousPos As Point = System.Windows.Forms.Control.MousePosition.toWfpPoint
于 2014-10-31T14:10:55.867 に答える