本文转自:http://www.cnblogs.com/hzbzxm/archive/2008/09/15/1291104.html

以前试过在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));
        }

转载于:https://www.cnblogs.com/freeliver54/archive/2008/11/22/1338921.html

[转]C# winForm 自定义鼠标样式的两种方法相关推荐

  1. 模拟键盘鼠标事件有两种方法

    实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...

  2. 改变鼠标指针形状两种方法及实例

    改变鼠标指针形状的方法有两种:一种:用css样式表来改变鼠标指针形状.另一种是:利用第三方控件的方法,而我自己最常用的是第一种:用css样式表来改变鼠标指针形状 我们先来看第一种:用css样式表来改变 ...

  3. Javascript第五章改变CSS样式节点两种方法,制作导航背景切换效果第十课

    第一种方法: 鼠标移出,移入来改变导航的样式 第二种方法: 如果改变的效果较多的话 代码出现冗余 可以有className 代码如下: 效果:

  4. Ajax设置自定义请求头的两种方法

    用自定义请求头token为例 方法一 $.ajax({type: "post",url:"http://127.0.0.1:4564/bsky-app/template/ ...

  5. .ajax 自定义headers,Ajax设置自定义请求头的两种方法

    示例用自定义请求头token为例 方法一 $.ajax({ type: "post", url:"http://127.0.0.1:4564/bsky-app/templ ...

  6. swiper 定义放多少张图片,小程序swiper轮播图,自定义样式,两种方法:原生方法和bindchange方法;将点点改为数字(当前第几张 /总共几张);点击点点跳转当前图片...

    一.点点部分 1.1.通过原生方法 (1)wxml文件 (2)wxss /* 轮播图部分 */ .swiperBar { width: 690rpx; height: 337rpx; margin: ...

  7. C# winform Excel导入保存数据两种方法

    方法一::微软自带excel 操作类 项目运行:设置 Any CPU 引用:System.Data.OleDb 点击事件导入按钮: private void buttonX25_Click(objec ...

  8. Arcgis for javascript不同的状态下自定义鼠标样式

    俗话说:爱美之心,人皆有之.是的,没错,即使我只是一个做地图的,我也希望自己的地图看起来好看一点.在本文,给大家讲讲在Arcgis for javascript下如何自定义鼠标样式. 首先,说几个状态 ...

  9. [C#]自定义鼠标样式

    工作中经常需要自定义鼠标样式来更丰富更形象地交互操作,系统自带的样式单一,难免会有些审美疲劳.取而代之,用一些比较形象的图标来定义鼠标样式,用户体验上就更加形象了. 自定义鼠标样式 /// <s ...

最新文章

  1. 模块架构不是软件成功的“决定因素”
  2. git安装和使用案例
  3. 计算机公共课考试试题,2019-度公共课计算机应用基础考试试题附答案.doc
  4. 始终在新标签页中打开文件
  5. mysql中engine=innodb和engine=myisam的区别详解
  6. 微服务实战(二):使用API Gateway
  7. haproxy代理设置及配置文件详解
  8. android activity alias,动态更换桌标 Activity-alias
  9. opencv入门课程:彩色图像灰度化和二值化(采用skimage库和opencv库两种方法)
  10. python获取mysql中的数据供js调用_详解js文件通过python访问数据库方法
  11. 灯泡亮度控制单片机_海淀区投影机灯泡
  12. java docx 内存溢出_第2章 Java内存区域与内存溢出异常
  13. Spring Boot的RestTemplate 之exchange方法
  14. CocosCreator简单小鸟穿越隧道小游戏
  15. c++ 14 新特性
  16. Codeforces Round #799 (Div. 4) (AK代码)
  17. 遥感大辞典_学遥感必读的十本书
  18. websocket传输数据大小限制_WebSocket传输超过126字节数据的方法
  19. 如何制作WindowsPE启动盘(极简)
  20. 车辆违章查询接口,获取支持城市参数接口示例

热门文章

  1. linux命令修改管理员时间,Linux管理员必须知道的sudo命令
  2. 【译】Understanding Batch Normalization with Examples in Numpy and Tensorflow with Interactive Code
  3. 基于mcat开发智能合约应用(二)调用合约
  4. JZOJ 5898. 【NOIP2018模拟10.6】距离统计
  5. JZOJ 5473. 【NOIP2017提高组正式赛】小凯的疑惑
  6. 数学之美 系列十六 (下)- 不要把所有的鸡蛋放在一个篮子里 最大熵模型
  7. 数据挖掘实验报告-关联规则算法实验
  8. 幻灯片中如何让日期和页码自动更新
  9. [codevs 2926] 黑白瓷砖(2002年安徽省队选拔赛)
  10. Codeforces 1276C/1277F/1259F Beautiful Rectangle (构造)