C# .Net中鼠标Cursor的公用辅助类

有时,我们需要将背景透明的png或gif格式图片生成的Cursor,甚至将其旋转后生成旋转效果的Cursor(可指定热点)。

直接上源码:

using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using System.Drawing;

namespace CommonUtils.Common
{
    /// <summary>
    /// Cursor的公用辅助类
    /// </summary>
    public class CursorUtil
    {
        /// <summary>
        /// 从资源文件中调用指定名称的Cursor图标
        /// </summary>
        /// <param name="cursorName">Cursor图标的名称</param>
        /// <returns>Cursor图标</returns>
        public static Cursor GetCursorByResourceName(string cursorName)
        {
            using (Stream resStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(cursorName))
            {
                return new Cursor(resStream);
            }
        }

        ///<summary>
        ///用背景透明的png或gif格式图片生成的Cursor
        /// 用法:
        /// Bitmap a=(Bitmap)Bitmap.FromFile("myCur.png");
        /// GetCursor(a, new Point(0, 0));
        /// </summary>
        /// <param name="cursorImg">背景透明的png或gif格式图片</param>
        /// <param name="hotPoint">热点</param>
        /// <returns>Cursor图标</returns>
        public static Cursor GetCursor(Bitmap cursorImg, Point hotPoint)
        {
            return GetRotatedCursor(cursorImg, hotPoint, 0);
        }

        /// <summary>
        /// 用背景透明的png或gif格式图片生成,并指定旋转角度的Cursor
        /// 用法:
        /// Bitmap a=(Bitmap)Bitmap.FromFile("myCur.png");
        /// GetRotatedCursor(a, new Point(0, 0),30f);
        /// </summary>
        /// <param name="cursorImg">背景透明的png或gif格式图片</param>
        /// <param name="hotPoint">热点</param> 
        /// <param name="rotationAngle">指定Cursor图片的旋转角度</param>
        /// <returns>Cursor图标</returns>
        public static Cursor GetRotatedCursor(Bitmap cursorImg, Point hotPoint, float rotationAngle)
        {
            int hotX = hotPoint.X;
            int hotY = hotPoint.Y;
            Bitmap cursorBmp = new Bitmap(cursorImg.Width * 2 - hotX, cursorImg.Height * 2 - hotY);
            Graphics g = Graphics.FromImage(cursorBmp);
            g.Clear(Color.FromArgb(0, 0, 0, 0));
            //旋转指定角度
            if(rotationAngle!=0) g.RotateTransform(rotationAngle);
            g.DrawImage(cursorImg, cursorImg.Width - hotX, cursorImg.Height - hotY, cursorImg.Width, cursorImg.Height);
            Cursor result = new Cursor(cursorBmp.GetHicon());
            g.Dispose();
            cursorBmp.Dispose();

            return result;
        }

        /// <summary>
        /// 用背景透明的png或gif格式图片生成,并指定旋转角度的Cursor
        /// 用法:
        /// Bitmap a=(Bitmap)Bitmap.FromFile("myCur.png");
        /// GetRotatedCursor(a, new Point(0, 0),30f);
        /// </summary>
        /// <param name="cursorImg">背景透明的png或gif格式图片</param>
        /// <param name="hotPoint">热点</param> 
        /// <param name="rotationAngle">指定Cursor图片的旋转角度</param>
        /// <returns>Cursor图标</returns>
        public Cursor GetRotatedCursor(byte[] curFileBytes, Point hotPoint, float rotationAngle)
        {
            var origStream = new MemoryStream(curFileBytes);
            var cursorImg = new System.Drawing.Icon(origStream).ToBitmap();
            return GetRotatedCursor(cursorImg,  hotPoint,  rotationAngle);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论
超级多的C#辅助大全 网上有各式各样的帮助,公共,但是比较零碎,经常有人再群里或者各种社交账号上问有没有这个helper,那个helper,于是萌生了收集全部helper的念头,以便日后使用。各式各样的几乎都能找到,所有功能性代码都是独立的之间没有联系,可以单独引用至项目。 1. C#读取AD域里用户名或组 2. Chart图形 3. cmd 4. Cookie&Session 5. CSV文件转换 6. DataTable转实体 7. DBHelper 8. DecimalUtility及文大写数字 9. DLL 10. Excel操作 11. FTP操作 12. H5-微信 13. Html操作 14. INI文件读写 15. IP辅助 16. Javascript 17. Json 18. JSON操作 19. JS操作 20. Lib 21. Mime 22. Net 23. NPOI 24. obj 25. packages 26. Path 27. PDF 28. Properties 29. QueryString 地址栏参数 30. RDLC直接打印帮助 31. ResourceManager 32. RMB 33. SqlHelper 34. SQL语句拦截器 35. URL的操作 36. VerifyCode 37. XML操作 38. 上传下载 39. 二维码操作 40. 共用工具 41. 其他 42. 分词辅助 43. 分页 44. 加密解密 45. 压缩解压缩 46. 各种验证帮助 47. 图片 48. 图片操作 49. 图片验证码 50. 处理多媒体的公共 51. 处理枚举 52. 字符串 53. 对象转换处理 54. 帮助文档 55. 序列化 56. 异步线程 57. 弹出消息 58. 数据展示控件绑定数据 59. 文件操作 60. 日历 61. 日志 62. 时间戳 63. 时间操作 64. 条形码 65. 条形码帮助 66. 条形码转HTML 67. 检测是否有Sql危险字符 68. 正则表达式 69. 汉字转拼音 70. 注册表操作 71. 科学计数,数学 72. 型转换 73. 系统操作相关的公共 74. 缓存 75. 网站安全 76. 网站路径操作 77. 网络 78. 视频帮助 79. 视频转换 80. 计划任务 81. 邮件 82. 邮件2 83. 配置文件操作 84. 阿里云 85. 随机数 86. 页面辅助 87. 验证码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大可山人

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值