WPF 获取点击屏幕的坐标
时间: 2023-09-15 07:20:01 浏览: 224
在 WPF 中,可以通过以下代码获取点击屏幕时的坐标:
```csharp
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Point point = e.GetPosition(this);
double x = point.X;
double y = point.Y;
// 处理点击事件
}
```
在上面的代码中,`Window_MouseLeftButtonDown` 是一个鼠标左键按下事件的处理程序。`e.GetPosition(this)` 方法可以获取相对于窗口左上角的坐标点。然后可以将这些坐标用于处理点击事件。
相关问题
WPF 使用GDI获取屏幕坐标
在WPF中,可以使用System.Windows.Forms命名空间中的Control类和Screen类来获取屏幕坐标。
首先需要添加对System.Windows.Forms的引用。
然后可以使用以下代码获取当前屏幕的大小:
```
System.Drawing.Rectangle screenBounds = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
```
接着,可以使用以下代码获取鼠标在屏幕上的位置:
```
System.Drawing.Point mousePosition = System.Windows.Forms.Control.MousePosition;
```
最后,可以使用以下代码将鼠标位置转换为WPF中的坐标:
```
System.Windows.Point wpfMousePosition = new System.Windows.Point(mousePosition.X, mousePosition.Y);
```
需要注意的是,使用System.Windows.Forms可能会导致一些兼容性问题。如果想要避免这些问题,可以考虑使用WPF自带的Mouse类和Screen类来获取屏幕坐标。
wpf如何获取到正确的控件坐标demo
在WPF(Windows Presentation Foundation)中,获取控件的坐标通常通过`DependencyObject`类及其属性`TranslatePoint`来实现。这里有一个简单的示例:
```csharp
// 假设有一个UserControl叫MyControl,里面有一个Button按钮btn
public partial class MyControl : UserControl
{
public MyControl()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// 获取鼠标点击点相对于自身的位置
Point mousePosition = Mouse.GetPosition(this);
// 如果需要的是屏幕坐标,需要将鼠标位置转换
Point screenPosition = KeyboardDevice.Current.GetScreenPoint(this);
// 或者如果你想要获取某个特定依赖项的绝对坐标
FrameworkElement targetElement = VisualTreeHelper.HitTest(this, mousePosition) as FrameworkElement;
if (targetElement != null)
{
Point relativePosition = targetElement.TransformToAncestor(this).Transform(mousePosition);
Debug.WriteLine($"点击坐标:{relativePosition}");
}
}
}
```
在这个例子中,当用户点击按钮时,我们首先获取鼠标在控件内的位置(`mousePosition`),如果需要屏幕坐标就使用`GetScreenPoint`。另外,我们还可以利用`HitTest`方法找到鼠标点击的依赖元素,并计算出该元素在控件中的相对坐标。
阅读全文