软件编程
位置:首页>> 软件编程>> C#编程>> C#实现绘制鼠标的示例代码

C#实现绘制鼠标的示例代码

作者:芝麻粒儿  发布时间:2023-06-11 04:40:54 

标签:C#,鼠标

实践过程

效果

C#实现绘制鼠标的示例代码

代码

public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }

private int _X, _Y;

[StructLayout(LayoutKind.Sequential)]
       private struct ICONINFO
       {
           public bool fIcon;
           public Int32 xHotspot;
           public Int32 yHotspot;
           public IntPtr hbmMask;
           public IntPtr hbmColor;
       }

[StructLayout(LayoutKind.Sequential)]
       private struct CURSORINFO
       {
           public Int32 cbSize;
           public Int32 flags;
           public IntPtr hCursor;
           public Point ptScreenPos;
       }

[DllImport("user32.dll", EntryPoint = "GetSystemMetrics")]
       private static extern int GetSystemMetrics(int mVal);

[DllImport("user32.dll", EntryPoint = "GetCursorInfo")]
       private static extern bool GetCursorInfo(ref CURSORINFO cInfo);

[DllImport("user32.dll", EntryPoint = "CopyIcon")]
       private static extern IntPtr CopyIcon(IntPtr hIcon);

[DllImport("user32.dll", EntryPoint = "GetIconInfo")]
       private static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO iInfo);

private void Form1_Load(object sender, EventArgs e)
       {
       }

private Bitmap CaptureCursor(ref int _CX, ref int _CY)
       {
           IntPtr _Icon;
           CURSORINFO _CursorInfo = new CURSORINFO();
           ICONINFO _IconInfo;
           _CursorInfo.cbSize = Marshal.SizeOf(_CursorInfo);
           if (GetCursorInfo(ref _CursorInfo))
           {
               if (_CursorInfo.flags == 0x00000001)
               {
                   _Icon = CopyIcon(_CursorInfo.hCursor);

if (GetIconInfo(_Icon, out _IconInfo))
                   {
                       _CX = _CursorInfo.ptScreenPos.X - _IconInfo.xHotspot;
                       _CY = _CursorInfo.ptScreenPos.Y - _IconInfo.yHotspot;
                       return Icon.FromHandle(_Icon).ToBitmap();
                   }
               }
           }

return null;
       }

private void button1_Click(object sender, EventArgs e)
       {
           int x = Control.MousePosition.X;
           int y = Control.MousePosition.Y;
           pictureBox1.Image = CaptureCursor(ref x, ref y);
       }
   }

来源:https://zhima.blog.csdn.net/article/details/128102100

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com