C# winform 自定义鼠标光标

发布时间:2020-04-12编辑:佚名阅读(1049)

第一种:(调用系统API)

首先引入两个命名空间

代码如下:

using System.Runtime.InteropServices;
using System.Reflection;

导入API

代码如下:

[DllImport("user32.dll")]
public static extern IntPtr LoadCursorFromFile(string fileName);
[DllImport("user32.dll")]
public static extern IntPtr SetCursor(IntPtr cursorHandle);
[DllImport("user32.dll")]
 public static extern uint DestroyCursor(IntPtr cursorHandle);

接下来使用自己的鼠标样式

代码如下:

private void Form1_Load(object sender, EventArgs e)
        {
            Cursor myCursor = new Cursor(Cursor.Current.Handle);
            IntPtr colorCursorHandle = LoadCursorFromFile("my.cur");//鼠标图标路径
            myCursor.GetType().InvokeMember("handle", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetField, null, myCursor,new object[] { colorCursorHandle });
            this.Cursor = myCursor;
        }

第二种:(不用API方式的,鼠标样式只需要一张背景透明的图片就行了,png或gif格式的)

代码如下:

        public void SetCursor(Image cursor)
        {
            Bitmap myNewCursor = new Bitmap(32,32);
            Graphics g = Graphics.FromImage(myNewCursor);
            g.Clear(Color.FromArgb(0, 0, 0, 0));
            g.DrawImage(cursor, 0,0,32,32);
            this.Cursor = new Cursor(myNewCursor.GetHicon());
            g.Dispose();
            myNewCursor.Dispose();
        }

在你想要改变鼠标样式的事件里头使用这个方法就行了,如:

代码如下:

        private void Form1_Load(object sender, EventArgs e)
        {
            Image a=Image.FromFile("myCur.png");
            SetCursor(a);
        }


  关键字:C#winform自定义鼠标光标


鼓掌

0

正能量

0

0

呵呵

0


评论区