C# 获取鼠标坐标
2015-07-26 12:01
363 查看
功能: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
}
}
环境: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
}
}
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#实现基于链表的内存记事本实例
- C#托管堆对象实例包含内容分析
- C#实现按照指定长度在数字前补0方法小结
- C# 通过 inline-asm 解决嵌入x86汇编
- C#虚方法的声明和使用实例教程
- C#获取文件夹及文件的大小与占用空间的方法