本文转自:http://www.cnblogs.com/hzbzxm/archive/2008/09/15/1291104.html
以前试过在WinForm中自定义鼠标样式,结果显示出来的鼠标变成单色。
后来百度了下,原来要用API来做。
首先引入两个命名空间
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->usingSystem.Runtime.InteropServices;
usingSystem.Reflection;
导入API
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->[DllImport("user32.dll")]
publicstaticexternIntPtrLoadCursorFromFile(stringfileName);
[DllImport("user32.dll")]
publicstaticexternIntPtrSetCursor(IntPtrcursorHandle);
[DllImport("user32.dll")]
publicstaticexternuintDestroyCursor(IntPtrcursorHandle);
接下来使用自己的鼠标样式
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->privatevoidForm1_Load(objectsender,EventArgse)
{
CursormyCursor=newCursor(Cursor.Current.Handle);
IntPtrcolorCursorHandle=LoadCursorFromFile("my.cur");//鼠标图标路径
myCursor.GetType().InvokeMember("handle",BindingFlags.Public|
BindingFlags.NonPublic|BindingFlags.Instance|
BindingFlags.SetField,null,myCursor,
newobject[]{colorCursorHandle});
this.Cursor=myCursor;
}
现在介绍另一种不用API方式的,鼠标样式只需要一张背景透明的图片就行了,png或gif格式的
写个方法
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->publicvoidSetCursor(Bitmapcursor,PointhotPoint)
{
inthotX=hotPoint.X;
inthotY=hotPoint.Y;
BitmapmyNewCursor=newBitmap(cursor.Width*2-hotX,cursor.Height*2-hotY);
Graphicsg=Graphics.FromImage(myNewCursor);
g.Clear(Color.FromArgb(0,0,0,0));
g.DrawImage(cursor,cursor.Width-hotX,cursor.Height-hotY,cursor.Width,
cursor.Height);
this.Cursor=newCursor(myNewCursor.GetHicon());
g.Dispose();
myNewCursor.Dispose();
}
在你想要改变鼠标样式的事件里头使用这个方法就行了
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->privatevoidForm1_Load(objectsender,EventArgse)
{
Bitmapa=(Bitmap)Bitmap.FromFile("myCur.png");
SetCursor(a,newPoint(0,0));
}
分享到:
相关推荐
以上两种方法都能实现C# WinForm应用中自定义鼠标的设置,第一种方法依赖于系统API,较为通用但需要处理API调用的问题;第二种方法则利用了.NET Framework的图形处理功能,更易于理解和实现,但需要确保自定义鼠标的...
在C# WinForm应用开发中,自定义滚动条是一种常见的需求,这可能涉及到对系统默认控件样式不满意或者为了实现特殊交互效果。本篇将详细讲解如何在C# WinForm中实现自定义滚动条。 首先,我们要理解滚动条的基本概念...
在C# WinForm应用开发中,自定义控件是一个常见的需求,这允许开发者根据项目需求创建具有特定功能或视觉效果的界面元素。本案例中,我们关注的是一个自绘制的滑块控件,该控件源于CodeProject上的一个项目,并且...
两套代码都为开发者提供了学习和实现C# WinForm抽屉菜单的不同途径,可以根据项目需求和个人喜好选择适合的方法。无论是从头构建还是利用现有控件改造,理解其背后的原理和实现机制对于提升WinForm应用的用户体验至...
本主题将深入探讨如何在C#环境下自定义滚动条,特别是如何修改滚动条的拖块颜色和轨道颜色,以及了解轨道的两种样式——线条与矩形。 首先,滚动条在Winform中是由`VScrollBar`(垂直滚动条)和`HScrollBar`(水平...
`BeautyButton.cs`和`CrystalButton.cs`展示了两种不同风格的实现,而`BeautyButton.resx`则提供了资源支持,使得这些自定义控件能够更加生动和多样化。在学习和使用这些控件时,我们可以深入理解C#中控件的继承、...
通过提供的源码,我们可以实现一个功能完备、视觉效果良好的开关按钮,它具有开/关两种状态,能够直观地反馈程序的状态或用户的选择。 首先,开关控件通常由两个部分组成:开状态和关状态的图形元素。在C# Winform...
6. **处理窗体边框**:为了保持窗体无边框但可拖动,需要移除默认的边框样式,并添加自定义的鼠标处理逻辑。 ```csharp this.FormBorderStyle = FormBorderStyle.None; this.DoubleBuffered = true; // 启用双缓冲 ...
在C# WinForm开发中,控件的外观和交互体验对于提升用户界面的美观度和易用性至关重要。"C# WinForm控件美化扩展系列之TabControl.rar"这个压缩包文件,显然专注于如何通过自定义扩展来美化标准的TabControl控件,使...
C# GDI+技术是.NET Framework提供的一种图形绘制工具,用于在Windows应用程序中创建和操纵图形。GDI+(Graphics Device Interface Plus)扩展了传统的GDI功能,提供了更丰富的绘图能力,包括矢量图形、图像处理和...
本资源主要关注如何通过自定义样式和控件来美化C#应用程序中的单选按钮(RadioButton)和复选按钮(CheckBox)。下面将详细介绍这两个控件的美化方法以及可能涉及到的相关知识点。 1. **基础知识** - 单选按钮与复...
在.NET框架中,C#是一种常用的编程语言,用于开发各种应用程序。在本示例中,我们关注的是一个特定的UI控件实现,即"双滑块TrackBar",也被称为"RangeTrackBar"。这个控件是标准Windows Forms库中的TrackBar控件的...
### C# WinForm 创建水晶风格的按钮 #### 知识点概述 在C# WinForms应用程序开发中,自定义控件是一种非常实用的功能,能够帮助开发者实现独特的界面设计。本篇将详细介绍如何创建一个具有水晶风格外观的按钮,并...
C# WinForm控件的拖动与缩放功能是Windows应用程序开发中常见且实用的特性,它能够增强用户界面的交互性和灵活性。本文将详细解析如何在C# WinForm项目中实现控件的拖动与缩放,通过设计并响应控件的MouseDown、...
在C# WinForm应用开发中,ListBox控件是一种常见的组件,用于显示一组可选择的项。这个控件在用户界面设计中起到了展示列表数据、让用户进行单选或多选的重要作用。"C# Winform控件listbox用法新实例Imageshow"这个...
一种常见的方法是利用皮肤系统,这通常涉及自定义控件的外观和行为,包括颜色、字体、边框样式等。"京华志&精华志出品"可能提供了一套皮肤资源,帮助开发者轻松改变这两类控件的视觉效果,使其更加吸引人。 为了...
本话题涉及一个改进的Label控件,它具有独特的特点:带有图片和文字,并且支持圆角设计,同时还提供了三种视觉样式——鼠标移入、按下和挪开时的不同效果。这个控件在Visual Studio 2008环境下已被成功调试并验证。 ...
C#是Microsoft开发的一种面向对象的编程语言,适用于.NET Framework,广泛应用于Windows应用开发,包括WinForm应用。 3. **拖放(Drag and Drop)**: 拖放是用户界面中一种常见的交互方式,允许用户通过鼠标将一...
Panel控件是一种容器控件,可以用来包含其他控件,并且可以自定义背景色、边框样式等。在这个场景下,Panel将作为我们的画布,用于绘制坐标系。 1. **创建坐标轴** - 使用GDI+(Graphics Device Interface Plus)...