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
    }
}


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