首页 > 编程语言 >C# .Net中鼠标Cursor的公用辅助类

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

时间:2023-02-27 12:33:33浏览次数:61  
标签:hotPoint C# cursorImg Bitmap Cursor new Net png


有时,我们需要将背景透明的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);
}
}
}

标签:hotPoint,C#,cursorImg,Bitmap,Cursor,new,Net,png
From: https://blog.51cto.com/u_15983015/6088276

相关文章

  • Excel CountIF 统计个数
    Tips:统计数据源中值的个数。函数:countif(数据源,条件表达式)数据源:可以是单列或单行,也可以是二维表条件表达式:运算符(>,>=,=,<>等),连接符(&),值(或单元格)或其他函数示例:COUNTIF......
  • C#测量工具示意图
    我们在常用的设计软件中,常见的测量工具如图:测量时,一般是用鼠标拉出一条线,如上图右下红色框内部分。它的测量结果显示在上图的上半部分,里面有XY坐标,宽度、高度,距离、角度等信......
  • C# .net中B样条曲线转贝塞尔曲线
    PointF[]Spline2Bezier(PointF[]points,intstart,intnum,boolclosed,floattension)privatestaticPointF[]Spline2Bezier(PointF[]points,intstart,intnum......
  • WINFORM + C# GDI+编程实现Photoshop, Illustrator类似绘图工具箱
    先看效果:其中,比较麻烦的是颜色选取工具,如下图: 要求点击上图颜色区域均可弹出如下图所示的颜色选取器对话框,其中:1、左侧左上角为对象填充,点击右侧右下角为边框颜色选择,左侧......
  • 从.net Framework4.6WPF升级到.netcore3.1/net5/6/7.0版本
    因项目需要,需将.netFramework4.6WPF升级到.netcore3.1/net5.0/6.0/7.0版本,通过很多办法解决,开始搞得一头雾水。终于,找到了办法。1、首先下载upgrade-assistant工具(.net升级......
  • C#使用拉依达准则(3σ准则)剔除异常数据(.Net剔除一组数据中的奇异值)
    1、问题的提出:电池生产中,遇到一批电池的测量结果数据:电压值电池个数电压值电池个数电压值电池个数电压值电池个数0.0561 4.091 4.14617 4.174134340.3211 4.0941 4.147......
  • leetcode 862. 和至少为 K 的最短子数组
    一个双端单调队列:如果新加入的数比队列尾的数小,那么队列尾的数就可以丢去,这是因为如果未来的一个数能和队列尾的数满足条件,那么也一定可以和新加入的数满足条件。另外,如果......
  • CentOS 7关闭图形化界面
    CentOS7关闭图形化界面旋转的冬瓜皮于2021-12-1316:46:46发布7344收藏36分类专栏:linux文章标签:centos服务器linux版权华为云开发者联盟该内容已被华为云开发者......
  • 将后端的application/json的格式数据类型转换成前端需要的类型格式
    前提:后端返回的数据内容但是红框的数据对于前端来说是不正确的数据所以我感觉前端处理这个数据本身这个操作都很傻X但是我尝试进行转换代码如下:得到的数据:点击查......
  • 推荐 7 个学习 TypeScript 的宝库,2021 学 TS 看这篇就够了!
    前言猫哥是一个常年混迹在GitHub上的猫星人,所以发现了不少好的前端开源项目、常用技巧,在此分享给大家。公众号:前端GitHub,专注于挖掘GitHub上优秀的前端开源项目,并以......