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

 更新时间:2013年05月20日 16:44:16   作者:  
本篇文章是对在C#中winForm自定义鼠标样式的两种实现方法进行了详细的分析介绍,需要的朋友参考下
第一种:(调用系统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(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();
        }

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

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

相关文章

  • WinForm特效之桌面上的遮罩层实现方法

    WinForm特效之桌面上的遮罩层实现方法

    这篇文章主要介绍了WinForm特效之桌面上的遮罩层实现方法,是一个非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • C#给PDF文件添加水印

    C#给PDF文件添加水印

    这篇文章主要为大家详细介绍了C#给PDF文件添加水印的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 详细介绍C# 泛型

    详细介绍C# 泛型

    这篇文章主要介绍了C# 泛型的相关资料,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下
    2020-08-08
  • C# 特殊的string类型详解

    C# 特殊的string类型详解

    本文主要介绍了C# 特殊的string类型。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • C#实现图像选择验证码的示例代码

    C#实现图像选择验证码的示例代码

    为了防止网站被非法登陆,网站一般通过验证码的方式,防止黑客用软件非法登陆,本文主要介绍了C#实现图像选择验证码的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • C#图片切割、图片压缩、缩略图生成代码汇总

    C#图片切割、图片压缩、缩略图生成代码汇总

    这篇文章主要为大家汇总了C#图片切割、图片压缩、缩略图生成代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • C#设计模式之行为型模式详解

    C#设计模式之行为型模式详解

    这篇文章主要为大家详细介绍了C#设计模式之行为型模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C# GUID ToString的使用总结

    C# GUID ToString的使用总结

    这篇文章主要介绍了C# GUID ToString的使用总结,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C# SQlite操作方法小结

    C# SQlite操作方法小结

    这篇文章主要介绍了C# SQlite操作方法,较为详细的讲述了SQLite的下载与C#针对SQLite的连接、创建、与执行SQL语句等操作相关技巧,需要的朋友可以参考下
    2016-07-07
  • ZooKeeper的安装及部署教程

    ZooKeeper的安装及部署教程

    Zookeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等,这篇文章主要介绍了ZooKeeper的安装及部署,需要的朋友可以参考下
    2019-06-06

最新评论