首页 > 作文

Winform应用程序如何使用自定义的鼠标图片

更新时间:2023-04-04 07:22:16 阅读: 评论:0

首先,建立图片与鼠标的对应关系。

class moustyle{  [dllimport("ur32.dll")]  public static extern intptr tcursor(intptr cursorhandle);  static moustyle()  {    initmoustyle();  }  private static void initmoustyle()  {    if (hand == null)    {      hand = tcursor("image//hand.png");    }    if (arrow == null)    {      arrow = tcursor("image//arrow.png");    }  }  /// <summary>  /// 鼠标手型样式  /// </summary>  public static cursor hand = null;  /// <summary>  /// 鼠标指针样式  /// </summary>  public static cursor arrow = null;  /// <summary>  /// 设置鼠标样式  /// </summary>  /// <param name="filename">自定义的鼠标样式文件</param>  /// <returns>鼠标样式</returns>  private static cursor tcursor(string filename)  {    //文件的绝对路径,在debug下    var path = system.io.path.getfullpath(filename) ;    //画图    bitmap bit = (bitmap)bitmap.fromfile(path, true);    bitmap mynewcursor = new bitmap(bit.width, bit.height);    graphics g = graphics.fromimage(mynewcursor);    g.clear(color.fromargb(0, 0, 0, 0));    //箭头和手型有点不一样    if (system.i林伟贤o.path.getfilename(filename).equals("hand.png"))    {      g.drawimage(bit, bit.width / 2 - 15, bit.height / 2, bit.width / 2, bit.height / 2);    }    el    {      g.drawimage(bit, bit.width / 2 - 15, bit.height / 2, bit.width / 2, bit.height / 2);    }    cursor cursor;    //获取图片的句柄    try    {      cursor = new cursor(mynewcursor.gethicon());    }    catch    {      cursor = new cursor(icon.fromhandle(mynewcursor.gethicon()).handle);    }    //释放资源    g.dispo();    return cursor;  }}

  如果是鼠标文件.cur结尾,可以直接使用。

法1、在每一个窗体中单独修改其中的鼠标外观,这样鼠标离开自己的程序后,也会恢复到系统默认的鼠标样式。

  在上述类中,添加代码:

/// <summary>/// 设置鼠标样式/// </summary>/// <param name="col">控件</param>public static void tmoustyle(control 做鬼脸表示什么col){  initmoustyle();  //设置窗体鼠标为箭头  if (col is form)  {    ((form)col).cursor = arrow;  }  //遍历控件,如果控件是箭头或默认,就改为自定义的箭头  //如果是手型就改为自定义的手型金兵是哪个民族  foreach (control con in col.controls)  {    if (con.cursor == cursors.hand)    {   cos60度等于多少啊   con.cursor = hand;    }    if (con.cursor == cursors.arrow || con.cursor == cursors.default)    {      con.cursor = arrow;    }    //递归遍历    tmoustyle((control)con);  }}

  然后在所有窗体中,均调用tmoustyle方法,传入窗体自身

法2、修改系统鼠标,待程序退出时,还原系统鼠标。首先添加代码,调用window的api:

[dllimport("ur32.dll")]public static extern bool tsystemcursor(intptr hcur, uint id);public const uint ocr_normal = 32512;public const uint ocr_hand = 32649;public const uint ocr_ibeam = 32513;//速查 https://docs.microsoft.com/zh-cn/windows/win32/api/winur/nf-winur-tsystemcursor?redirectedfrom=msdn//ocr_appstarting:标准箭头和小的沙漏;32650//ocr_normal:标准箭头 32512//ocr_cross:交叉十字线光标: 32515//ocr_hand:手的形状(windowsnt5.0和以后版本) 32649//ocr_help:箭头和向东标记; 32651//ocr_ibeam:i形梁; 32513//ocr_no:斜的圆 32648//ocr_sizeall:四个方位的箭头分别指向北、南、东、西 32646//ocr_sizenew:双箭头分别指向东北和西南; 32643//ocr_sizens:双箭头,分别指向北和南 32645//ocr_sizenw:双箭头分别指向西北和东南; 32642//ocr_sizewe:双箭头分别指向西和东 32644//ocr_up:垂直箭头: 32516//ocr_wait:32514 沙漏返回值:如果成功,返回非零值;如果失败,返回值为零。[dllimport("ur32.dll")]public static extern bool systemparametersinfo(uint uiaction, uint uiparam, intptr pvparam, uint fwinini);public const uint spi_tcursors = 87;public const uint spif_n刑事代理dwininichange = 2;

  程序启动和退出时分别调用设置方法和恢复方法:

private void button1_click(object nder, eventargs e){  //设置  tsystemcursor(cursors.waitcursor.copyhandle(), ocr_normal);  tsystemcursor(cursors.waitcursor.copyhandle(), ocr_ibeam);  //..可以根据情况加}private void button2_click(object nder, eventargs e){  //恢复  systemparametersinfo(spi_tcursors, 0, intptr.zero, spif_ndwininichange);}

以上就是winform应用程序如何使用自定义的鼠标图片的详细内容,更多关于winform 自定义鼠标图片的资料请关注www.887551.com其它相关文章!

本文发布于:2023-04-04 07:22:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/8d206bdacd4409058300b476f8e47a86.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Winform应用程序如何使用自定义的鼠标图片.doc

本文 PDF 下载地址:Winform应用程序如何使用自定义的鼠标图片.pdf

标签:鼠标   箭头   样式   自定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图