桌面开发之自定义光标样式
首先鼠标在移动到地图中绘图时,光标的显示状况将变化
解决C# winForm自定义鼠标样式的两种实现方法详解
需要注意的是,鼠标的点击位置是固定的,都在坐上角,则相应图片引导用户的末端应该是从右下到左上的类型为佳
该链接提供的代码已经足够实现功能,要注意使用的照片最好刚刚好切到光标的顶点,这样点击位置就不会偏移,也好调整,另外添加了一个缩放的参数用于调整缩放比例
/// <summary>
/// 设置光标图片
/// </summary>
/// <param name="cursor">光标图片</param>
/// <param name="hotPoint">指定光标点击点</param>
/// <param name="zoom">指定图片缩放指数,默认为0.1倍</param>
public void SetCursor(Bitmap cursor, Point hotPoint,float zoom=0.1f)
{
int hotX = hotPoint.X;
int hotY = hotPoint.Y;
Bitmap myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);
Graphics g = Graphics.FromImage(myNewCursor);
g.Clear(Color.FromArgb(0, 0, 0, 0));
g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width*zoom,
cursor.Height*zoom);
this.Cursor = new Cursor(myNewCursor.GetHicon());
g.Dispose();
myNewCursor.Dispose();
}
该函数在进入控件时运行前,应该保存未修改的光标状态,这样在离开控件时才能恢复回原状
public Cursor cr;//定义全局变量
cr = Cursor.Current;//保存当前的光标状态
this.Cursor = this.cr;//恢复当前光标状态