Get Mouse Position on Canvas (But NOT on window)?

爱⌒轻易说出口 提交于 2020-01-09 07:21:53

问题


I have a project in WPF 4 and vb.net 2010.

I have a canvas inside a window. The window is full screen, but the canvas is set to a solid 640x480 in the center of the window. I need to get the mouse position inside of the canvas, but NOT inside of the window. How do I do this?


回答1:


Doesn't this work?

Point p = Mouse.GetPosition(canvas);

The position of the mouse pointer is calculated relative to the specified element with the upper-left corner of element being the point of origin,




回答2:


Hi the important thing is the

NOT on the Window

the canvas is part of the window as well. one example:

  • the Window.AllowsTransparency state is on true
  • the Window.Background is #00000000 (completely transparent)
  • the Window.Style is None
  • the Window.State is Maximized and
  • there are NO controls or elements on the window!

... so if you start the application you will see Nothing now tell me how to get the mouseposition on the screen in pixel

!Warning! if you juse Mouse.GetPosition(this); it will return x0 y0 every time




回答3:


so I solved the Problem by using System.Windows.Forms.Control.MousePosition it's a bit a mix of wpf and Windows.Forms but I've given up xD.

Sorry for yelling :/

To make it easy for me I made a Extension:

<DebuggerHidden> _
<System.Runtime.CompilerServices.Extension> _
Public Function toWfpPoint(p As System.Drawing.Point) As Point
    Return new Point(p.X, p.Y)
End Function

Now I just can juse it like this:

Dim MousPos As Point = System.Windows.Forms.Control.MousePosition.toWfpPoint


来源:https://stackoverflow.com/questions/5690698/get-mouse-position-on-canvas-but-not-on-window

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!