C# 获取鼠标座标

功能: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
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章