在使用QQ的截图功能的时候,是不是觉得它的光标很酷呢?今天就说一下怎么应用自定义光标,在我们的截图工具中使用QQ截图的光标。
打开资源:
切换到文件资源视图:
打开资源文件目录,将光标文件复制到此目录下:
所需光标文件下载:C#软件开发实例.私人订制自己的屏幕截图工具中使用的光标文件
选中Resources目录,刷新,显示出刚刚复制进来的光标文件:
选中光标文件,拖动到资源的文件视图中:
资源资源名称中的单词第一个字母改为大写。
光标预览:
在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#软件开发中,创建一个自定义的屏幕截图工具是一项常见的任务,它涉及到图形用户界面(GUI)的交互和图像处理技术。本实例重点讨论的是如何在这样的工具中使用自定义的光标文件,以提供更加个性化的用户体验。...
此代码对应于博客文章:C#软件开发实例.私人订制自己的屏幕截图工具(四)基本截图功能实现,文章链接:http://blog.csdn.net/testcs_dn/article/details/23346683
此代码对应于博客文章:C#软件开发实例.私人订制自己的屏幕截图工具(六)添加配置管理功能,文章链接:http://blog.csdn.net/testcs_dn/article/details/24466763
1. 创建光标实例:通过以下代码可以创建一个新的自定义光标: ```csharp Icon customIcon = Icon.FromHandle(new Bitmap("custom_cursor.ico").GetHicon()); Cursor customCursor = new Cursor(customIcon.Handle); ...
本文将详细讲解如何在C#环境下,使用Visual Studio 2017,基于.NET Framework 2.0,实现自定义光标的创建和应用。 首先,我们需要了解在Windows Forms中光标的基本概念。光标是鼠标指针的一种图形表示,它通常由...
《C# WinForm实例解析——200个经典...通过深入学习这200个经典实例,你将能够全面掌握C# WinForm开发,提升自己的编程技巧,为日后的项目开发打下坚实基础。每一个源码都是一个宝贵的教育资源,值得反复研读和实践。
在本文中,我们将深入探讨如何使用C#编程语言实现屏幕区域截图的功能。C#是一种广泛应用于Windows应用程序开发的面向对象的编程语言,它提供了丰富的类库支持,使得开发者能够轻松地进行屏幕捕获操作。 首先,我们...
在IT领域,托盘、自定义光标以及图标是构建用户界面(UI)时不可或缺的元素,它们共同决定了软件或应用程序的美观度和用户体验。下面将详细解释这些概念及其重要性。 托盘,通常指的是系统托盘或者通知区域,位于...
在本文中,我们将深入探讨如何使用C#编程语言实现屏幕截屏功能。C#是一种广泛应用于Windows桌面应用开发的强大语言,Microsoft的.NET框架为开发者提供了丰富的API和类库,使得屏幕截屏这样的任务变得简单易行。让...
在本文中,我们将深入探讨如何使用C#编程语言构建一个通讯录实例。C#是一种功能强大的面向对象的编程语言,广泛应用于开发Windows桌面应用程序、Web应用程序以及游戏等。创建一个通讯录实例是学习C#基础知识和面向...
《ArcGIS Engine+C#实例开发教程》是一份深入讲解如何使用ArcGIS Engine结合C#进行地理信息系统(GIS)开发的详细教程。ArcGIS Engine是Esri公司提供的一个强大的开发工具,它允许开发者创建桌面、移动和Web应用程序...
基于C#的软件开发实例,可供程序人员参考
综上所述,“自定义鼠标光标.rar”压缩包可能是提供了一系列预设的自定义光标资源,用户只需解压并按照正确的步骤操作,即可在自己的电脑上使用这些独特的鼠标光标,为日常工作和娱乐增添乐趣和个性化。
C#截图(截屏)源代码及使用例子(仿QQ截图) 基于CS程序员之窗CSharpWin截图源码,进行了简单修改。 1、截图时添加遮罩层 2、响应键盘事件ESC 3、默认鼠标样式 4、保存默认文件名 5、截图时立即执行OnPaint函数
在这个实例中,我们将探讨如何在C#中创建自定义控件,以及涉及的一些关键知识点。 首先,我们来看`button`控件。在.NET Framework中,`button`是最基础的交互元素之一,通常用于触发某个操作。要自定义`button`,...
总结起来,使用ExcelDna和C#开发自定义函数可以极大地提升Excel的工作效率,使得用户能够定制适合自己业务场景的计算逻辑。无论是简单的数据处理还是复杂的业务逻辑,都能在Excel环境中得到实现。通过深入学习和实践...
文中首先介绍了项目开发平台的选择,使用西门子TIA Portal V15编程软件编写运动控制程序,并实现PLC对步进电机的控制。接着,文中讨论了硬件接线、PLC编程和上位机开发思路,比较了组态软件和C#开发上位机的区别,...
在C#编程中,"拖放"(Drag and Drop)功能是一项常用的技术,它允许用户通过鼠标操作将一个对象从一处“拖动”到另一处“放下”。这项技术广泛应用于文件管理器、桌面图标以及各种软件界面中,为用户提供了一种直观、...
本资料包“C#自定义控件.rar”显然是关于如何在C#环境中创建和使用自定义控件的教程或示例代码。 自定义控件的创建通常分为几个步骤: 1. **基础类选择**:首先,你需要选择一个基础类来继承。这可以是系统提供的...
本文将对C#自定义控件开发进行详细的解释,涵盖自定义控件基础知识、编写简单的自定义控件、检查控件的设计时行为等方面。 一、自定义控件基础知识 Windows 窗体控件是可再次使用的组件,它们封装了用户界面功能,...