源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解决C# winForm自定义鼠标样式的两种实现方法详解

  • 时间:2020-01-08 00:36 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解决C# winForm自定义鼠标样式的两种实现方法详解
[b]第一种:(调用系统API) [/b]首先引入两个命名空间
[u]复制代码[/u] 代码如下:
using System.Runtime.InteropServices; using System.Reflection;
导入API
[u]复制代码[/u] 代码如下:
[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);
接下来使用自己的鼠标样式
[u]复制代码[/u] 代码如下:
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格式的)
[u]复制代码[/u] 代码如下:
public void SetCursor(Bitmap cursor, Point hotPoint)         {             int hotX = hotPoint.X;             int hotY = hotPoint.Y;             Bitmap myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);             Graphics g = Graphics.FromImage(myNewCursor);             g.Clear(Color.FromArgb(0, 0, 0, 0));             g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width,             cursor.Height);             this.Cursor = new Cursor(myNewCursor.GetHicon());             g.Dispose();             myNewCursor.Dispose();         }
在你想要改变鼠标样式的事件里头使用这个方法就行了,如:
[u]复制代码[/u] 代码如下:
private void Form1_Load(object sender, EventArgs e)         {             Bitmap a=(Bitmap)Bitmap.FromFile("myCur.png");             SetCursor(a, new Point(0, 0));         }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部