iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#怎么对桌面应用程序自定义鼠标光标
  • 104
分享到

C#怎么对桌面应用程序自定义鼠标光标

2023-07-02 13:07:10 104人浏览 独家记忆
摘要

这篇“C#怎么对桌面应用程序自定义鼠标光标”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么对桌面应用程序自定义鼠标光标

这篇“C#怎么对桌面应用程序自定义鼠标光标”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么对桌面应用程序自定义鼠标光标”文章吧。

winform程序

对于WinFORM程序,可以通过修改Control.Cursor属性来实现光标的修改,如果我们有光标文件的话,可以直接通过如下代码实现自定义光标:

this.Cursor = new Cursor("myCursor.cur");

但这种方式不是本文介绍的重点,本文主要介绍如何自己绘制光标,这样则具有更多的可控性和灵活性。

创建一个自定义光标,首先需要定义需要一个光标结构 ICONINFO ,它的.net版本如下:

    public struct IconInfo    {        public bool fIcon;        public int xHotspot;        public int yHotspot;        public IntPtr hbmMask;        public IntPtr hbmColor;    }

然后通过GetIconInfo and CreateIconIndirect两个函数来合成光标。完整代码如下: 

    public class CursorHelper    {        static class NativeMethods        {            public struct IconInfo            {                public bool fIcon;                public int xHotspot;                public int yHotspot;                public IntPtr hbmMask;                public IntPtr hbmColor;            }            [DllImport("user32.dll")]            public static extern IntPtr CreateIconIndirect(ref IconInfo icon);            [DllImport("user32.dll")]            [return: MarshalAs(UnmanagedType.Bool)]            public static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo);        }        public static Cursor CreateCursor(Bitmap bmp, int xHotSpot, int yHotSpot)        {            var icon = new NativeMethods.IconInfo            {                xHotspot = xHotSpot,                yHotspot = yHotSpot,                fIcon = false            };            NativeMethods.GetIconInfo(bmp.GetHicon(), ref icon);            return new Cursor(NativeMethods.CreateIconIndirect(ref icon));        }    }

测试代码为:

    using (Bitmap bitmap = new Bitmap(21, 26))    using (Graphics g = Graphics.FromImage(bitmap))    {        g.DrawRectangle(Pens.Red, 0, 0, 20, 25);        this.Cursor = CursorHelper.CreateCursor(bitmap, 3, 3);    }

WPF程序

至于WPF程序,和WinForm程序是非常类似的,一方面,它也可以通过光标文件来实现写入Cursor属性来自定义光标文件。

至于自己绘制光标,上面的代码基本上也是可以复用的,不过相对的要重新封装一下,完整代码如下: 

    public class CursorHelper    {        static class NativeMethods        {            public struct IconInfo            {                public bool fIcon;                public int xHotspot;                public int yHotspot;                public IntPtr hbmMask;                public IntPtr hbmColor;            }            [DllImport("user32.dll")]            public static extern SafeIconHandle CreateIconIndirect(ref IconInfo icon);            [DllImport("user32.dll")]            public static extern bool DestroyIcon(IntPtr hIcon);            [DllImport("user32.dll")]            [return: MarshalAs(UnmanagedType.Bool)]            public static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo);        }        [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]        class SafeIconHandle : SafeHandleZeroOrMinusOneIsInvalid        {            public SafeIconHandle()                : base(true)            {            }            protected override bool ReleaseHandle()            {                return NativeMethods.DestroyIcon(handle);            }        }        static Cursor InternalCreateCursor(System.Drawing.Bitmap bitmap, int xHotSpot, int yHotSpot)        {            var iconInfo = new NativeMethods.IconInfo            {                xHotspot = xHotSpot,                yHotspot = yHotSpot,                fIcon = false            };            NativeMethods.GetIconInfo(bitmap.GetHicon(), ref iconInfo);            var cursorHandle = NativeMethods.CreateIconIndirect(ref iconInfo);            return CursorInteropHelper.Create(cursorHandle);        }        public static Cursor CreateCursor(UIElement element, int xHotSpot = 0, int yHotSpot = 0)        {            element.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));            element.Arrange(new Rect(new Point(), element.DesiredSize));            var renderTargetBitmap = new RenderTargetBitmap(                (int)element.DesiredSize.Width, (int)element.DesiredSize.Height,                96, 96, PixelFormats.Pbgra32);            renderTargetBitmap.Render(element);            var encoder = new PngBitmapEncoder();            encoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));            using (var memoryStream = new MemoryStream())            {                encoder.Save(memoryStream);                using (var bitmap = new System.Drawing.Bitmap(memoryStream))                {                    return InternalCreateCursor(bitmap, xHotSpot, yHotSpot);                }            }        }    }

需要注意的是,由于使用的System.Drawing.BitMap,是需要引用System.Drawing.dll的

封装之后,是可以直接传入UIElement作为自绘制的光标的,得益于WPF的强大绘图功能,是可以非常容易的绘制漂亮的光标的。测试代码如下:

this.Cursor= CursorHelper.CreateCursor(new UserControl1());

以上就是关于“C#怎么对桌面应用程序自定义鼠标光标”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: C#怎么对桌面应用程序自定义鼠标光标

本文链接: https://www.lsjlt.com/news/342072.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#对桌面应用程序自定义鼠标光标
    有的时候,一个自定义的鼠标光标能给你的程序增色不少。本文这里介绍一下如何在.net桌面程序中自定义鼠标光标。由于.net的桌面程序分为WinForm和WPF两种,这里分别介绍一下。 ...
    99+
    2024-04-02
  • C#怎么对桌面应用程序自定义鼠标光标
    这篇“C#怎么对桌面应用程序自定义鼠标光标”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么对桌面应用程序自定义鼠标光标...
    99+
    2023-07-02
  • win10系统怎么自定义桌面图标
    在Windows 10系统中,你可以按照以下步骤来自定义桌面图标:1. 打开“设置”菜单,使用Win + I快捷键可以快速打开。2....
    99+
    2023-10-19
    win10
  • windows7桌面图标如何自定义位置windows7桌面图标自定义位置操作流程
    windows7系统软件适用众多自定义设定,比如客户能够随意更改桌面环境,桌面图标的位置还可以自定义,想放哪就放哪。那样windows7桌面图标自定义位置怎么操作呢?你先鼠标右键桌面空白处,查看更多,在进行项中有“全自动排列图标”和“将标志...
    99+
    2023-07-12
  • css鼠标样式怎么自定义
    这篇文章主要介绍“css鼠标样式怎么自定义”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css鼠标样式怎么自定义”文章能帮助大家解决问题。   那么下面给大家一段...
    99+
    2024-04-02
  • 怎么使用CSS创建自定义光标
    这篇文章主要介绍了怎么使用CSS创建自定义光标,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 答:使用CSScursor属性 您可以使用...
    99+
    2024-04-02
  • CSS中怎么自定义光标样式
    本篇文章为大家展示了CSS中怎么自定义光标样式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。css样式div{  cursor:url('1.jpg'...
    99+
    2024-04-02
  • 微信小程序轮播图怎么自定义光标位置
    本篇内容介绍了“微信小程序轮播图怎么自定义光标位置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如图轮播图的光标可以用定位来改变上下左右的位...
    99+
    2023-07-02
  • Win10 10072预览版怎么自定义桌面图标?
    Windows 10 Insider Preview 10074版  如何设置桌面图标 1、进入到桌面,点击桌面右下角信息通知图标(小喇叭和输入法中间那个),出来右边的隐藏菜单,点击设置 2、个性化 3、主...
    99+
    2023-06-14
    Win10 10072 图标 预览 自定义 桌面图标
  • 怎么在win10系统中自定义桌面图标
    在win10系统中自定义桌面图标的方法:1.选择应用右键点击属性;2.属性页面切换到快捷方式;3.点击更改图标;4.选择图标或填写路径;具体步骤如下:首先,在计算机桌面中选择一个应用,右键点击“属性”选项;进入到属性页面后,在页面中切换到“...
    99+
    2024-04-02
  • 微信小程序轮播图自定义光标位置
    本文实例为大家分享了微信小程序轮播图自定义光标位置的具体代码,供大家参考,具体内容如下 如图 轮播图的光标可以用定位来改变上下左右的位置 wxml: <!--start ba...
    99+
    2024-04-02
  • win7系统鼠标点击桌面图标没反应怎么办
    这篇文章主要介绍win7系统鼠标点击桌面图标没反应怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!右键点击任务栏,然后选择任务管理器,如果任务栏也不能点击则按CTRL+ATL+DEL,然后再选择打开任务管理器。在...
    99+
    2023-06-28
  • prometheus client_go为应用程序自定义监控指标
    目录使用prometheus client_go为应用程序添加监控指标原因去掉Proc和Go指标使用prometheus client_go为应用程序添加监控指标 使用promet...
    99+
    2023-02-15
    prometheus client_go监控指标 go监控指标
  • C#中怎么定义鼠标指针形状
    今天就跟大家聊聊有关C#中怎么定义鼠标指针形状,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#鼠标指针语法:public virtual Cursor Cursor { get; ...
    99+
    2023-06-17
  • Win10预览版14342鼠标双击桌面图标无反应该怎么办?
    电脑安装的是Windows10-14342版系统(Win10预览版14342首个补丁KB3158988发布 修复Edge浏览器),今天出现了一个问题,即鼠标双击桌面图标没有反应,打不开应用程序,如何解决这个问题呢? 方法...
    99+
    2023-05-20
    Win10 鼠标 图标
  • 电脑怎么让桌面图标自动排序
    要让电脑桌面图标自动排序,可以按照以下步骤操作:1. 鼠标右键点击桌面空白处,选择“查看”或“View”选项。2. 在弹出的菜单中,...
    99+
    2023-09-05
    电脑
  • uniapp怎么自定义验证码输入框并隐藏光标
    这篇文章主要讲解了“uniapp怎么自定义验证码输入框并隐藏光标”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“uniapp怎么自定义验证码输入框并隐藏光标”吧!一. 前言点击输入框唤起键盘,...
    99+
    2023-07-05
  • JS实现自定义鼠标右击菜单的代码怎么写
    这篇“JS实现自定义鼠标右击菜单的代码怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • win10系统如何在桌面上添加应用程序图标
       1.在桌面空白的地方右键,选择“个性化(R)”进入下一步操作。如下图所示   2.在打开的个性化窗口中,点击打开左上角的“更改桌面图标”进入下   3....
    99+
    2023-06-11
    win10 应用程序 图标 添加 系统 桌面上
  • vant怎么实现Collapse折叠面板标题自定义
    这篇文章主要介绍了vant怎么实现Collapse折叠面板标题自定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vant怎么实现Collapse折叠面板标题自定义文章都会有所收获,下面我们一起来看看吧。van...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作