C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标

摘要:
本例中的所有文章文件夹(I)功能概述(II)创建项目,注册热键,显示屏幕截图主窗口(III)托盘图标和菜单的实现(IV)基本屏幕截图功能的实现(V)拖动过程中的闪烁和干扰的优化(VI)添加配置管理功能(VII)添加放大镜功能(VIII)添加键盘操作屏幕截图功能(IX)使用自己定义的光标,QQ截图中的光标(X)包括使用QQ截图功能时屏幕截图中的鼠标指针形状。今天,我们将讨论如何在我们的截图工具中使用自己定义的光标来使用QQ截图的光标。

本实例所有文章文件夹


在使用QQ的截图功能的时候。是不是认为它的光标非常酷呢?今天就说一下怎么应用自己定义光标,在我们的截图工具中使用QQ截图的光标。

打开资源:

C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标第1张

切换到文件资源视图:

C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标第2张

打开资源文件文件夹,将光标文件拷贝到此文件夹下:

C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标第3张

所需光标文件下载:C#软件开发实例.私人订制自己的屏幕截图工具中使用的光标文件

选中Resources文件夹,刷新,显示出刚刚复制进来的光标文件:

C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标第4张

选中光标文件,拖动到资源的文件视图中:

C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标第5张

资源资源名称中的单词第一个字母改为大写。

光标预览:

C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标第6张

在Form1类中加入私有变量:

        #region 自己定义光标
        System.Windows.Forms.Cursor cursorCross = null;
        System.Windows.Forms.Cursor cursorDefault = null;
        System.Windows.Forms.Cursor cursorText = null;
        System.Windows.Forms.Cursor cursorColor = null;
        #endregion

加入WindowsAPI声明:

        [DllImport("user32.dll")]
        private static extern IntPtr LoadCursorFromFile(string fileName);

加入从已有资源中获得光标的方法:

        /// <summary>
        /// 从已有资源中获得光标
        /// </summary>
        /// <param name="resource"></param>
        /// <returns></returns>
        public static Cursor getCursorFromResource(byte[] resource)
        {
            byte[] b = resource;
            FileStream fileStream = new FileStream("cursorData.dat", FileMode.Create);
            fileStream.Write(b, 0, b.Length);
            fileStream.Close();
            Cursor cur = new Cursor(LoadCursorFromFile("cursorData.dat"));
            return cur;
        }

加入窗体初始化事件处理程序,加入自己定义光标:

        /// <summary>
        /// 窗体初始化事件处理程序
        /// </summary>
        private void Form1_Init()
        {
            this.isCuting = false;
            this.beginPoint = new Point(0, 0);
            this.endPoint = new Point(0, 0);

            cursorDefault = getCursorFromResource(Properties.Resources.Cursor_Default);
            cursorCross = getCursorFromResource(Properties.Resources.Cursor_Cross);
            cursorText = getCursorFromResource(Properties.Resources.Cursor_Text);
            cursorColor = getCursorFromResource(Properties.Resources.Cursor_Color);
        }

设置默认光标。处理光标状态:

在ShowForm方法的else条件中加入:

this.Cursor = cursorDefault;
在ExitCutImage方法中加入代码:

this.Cursor = cursorDefault;
加入鼠标进入Form1窗体事件处理程序:

        /// <summary>
        /// 鼠标进入Form1窗体事件处理程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_MouseEnter(object sender, EventArgs e)
        {
            this.Cursor = cursorDefault;
        }
Form1的构造函数中加入代码:

Form1_Init();
Ok,编译,截图看看效果吧!

这里加入了多个光标文件,可是仅仅用到了一个。其他的在以后加入的功能中会使用到。


免责声明:文章转载自《C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于时钟驱动问题selenium之处理alert弹出对话框下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32一键下载电路设计原理

先放原理图(补充:图中的BOOT0通过10K的电阻接到地),再解释为什么这么设计: STM32启动方式:BOOT0和 BOOT1用于设置 STM32的启动方式 ,见下表: BOOT0=1,BOOT1=0:串口下载模式; BOOT0=0,BOOT1=X:程序启动模式,从内部flash启动。 设计思路:串口一键下载需要做的就是下载时,为串口下载模式,下载完...

Python+gitlab实现分支批量合并打tag

  最近公司代码托管有SVN迁移到Gitlab,每次版本发布都要将代码合并至master分支且打tag,应用较多重复且繁琐,于是使用Python+gitlab实现分支批量合并打tag; 参考 python-gitlab文档 环境准备: 1.Python3 2.pip install python-gitlab token:gitlab用户令牌,生成如下:...

Win10系统的SurfacePro4如何重装系统-2 重装WIN10系统

把SurfacePro充好电,然后关机,开机按住音量+,然后再按电源键,可以开机并进入BIOS(此前应确保优盘已经装了PE并插入Surface)   然后选择U盘启动为第一个(按住之后把他拖放到第一位置即可),如果你能看到多个Windows Boot Manager,也可以点击后面的删除,这些都是残留的启动选项,反正也启动不了,最后弄完之后又会把可用...

混合开发的几个框架

  下面给大家介绍几个最厉害的混合开发框架:   1.IONIC 是目前最有潜力的一款HTML5手机应用开发框架。通过SASS构建应用程序,它提供了很多UI组件来帮助开发者开发强大的应用。它使用JavaScript MVVM框架和 AngularJS来增强应用。提供数据的双向绑定,使用它成为Web和移动开发者的共同选择。即将发布的AngularJS 2.0...

通过Foxit和坚果云实现iPad和PC的pdf同步阅读(修改,笔记)

这是解决我之后上班地铁上看书问题的一个关键部分 一个手持电子设备,不大不小 一个方便做笔记的笔 一个方便做笔记的阅读器软件 方便快速地同步(只同步标记最好了) 在查看很多建议以及自己尝试之后,总结了这么几点: 不管使用什么文件管理软件,同步的方式是一样的,常用有这么几种 网盘同步:国际网盘支持好,但同步速度简直感人 。而国内网盘基本不支持。 OneD...

Winform布局开源框架,Winform控件框架,插件化框架

  什么是Winform框架?   Winform框架是基于.NET开发平台研发的用于快速开发软件项目的软件模板或开发平台,常用的程序语言有C#.NET, VB.NET。   通常Winform框架界面组件使用第三方控件,如:DevExpress,该控件功能强调,用户体验友好。 若全部采用.NET原生组件,开发效率低,界面不美观,用户体验差,特别是基于数...