功能:C# 获取鼠标坐标界面展示出来
环境:vs2010,wpf
界面代码:
<Window x:Class="GetMousePosition.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="450" Width="650" MouseMove="Window_MouseMove">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<Grid Grid.Row="1" Margin="0" Name="grid1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="120" />
<ColumnDefinition Width="120" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="1" Name="grid2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition Width="35*" />
</Grid.ColumnDefinitions>
<Label Content="x:" Height="25" HorizontalAlignment="Left" Margin="0" Name="labX" VerticalAlignment="Center" Width="25" />
<Label Content="" Height="25" HorizontalAlignment="Left" Margin="0" Name="labPosX" VerticalAlignment="Center" Width="65" Grid.Column="1"/>
</Grid>
<Grid Grid.Column="2" Name="grid3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition Width="35*" />
</Grid.ColumnDefinitions>
<Label Content="y:" Height="25" HorizontalAlignment="Left" Margin="0" Name="labY" VerticalAlignment="Center" Width="25" />
<Label Content="" Height="25" HorizontalAlignment="Left" Margin="0" Name="labPosY" VerticalAlignment="Center" Width="65" Grid.Column="1"/>
</Grid>
</Grid>
</Grid>
</Window>
后台逻辑代码:
using System.Windows;
using System.Windows.Input;
using System.Runtime.InteropServices;
namespace GetMousePosition
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
GetMousePosition(sender, e);
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool GetCursorPos(out POINT pt);
private void GetMousePosition(object sender, System.Windows.Input.MouseEventArgs e)
{
Point p = e.MouseDevice.GetPosition(this); //获取鼠标相对位置
//MainWindow.POINT pit = new MainWindow.POINT();
//MainWindow.GetCursorPos(out pit); //获取鼠标绝对位置
labPosX.Content = p.X.ToString();
labPosY.Content = p.Y.ToString();
}
#region 定义坐标数据
#if true
//动态显示
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
private int xPos;
private int yPos;
public POINT(int x, int y)
{
this.xPos = x;
this.yPos = y;
}
public int X
{
get { return xPos; }
set { xPos = value; }
}
public int Y
{
get { return yPos; }
set { yPos = value; }
}
}
#else
public class POINT
{
private int xPos;
private int yPos;
public POINT(int x, int y)
{
this.xPos = x;
this.yPos = y;
}
public int X
{
get{ return xPos;}
set{ xPos = value;}
}
public int Y
{
get{ return yPos;}
set{ yPos = value;}
}
}
#endif
#endregion
}
}