最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Winform應(yīng)用程序如何使用自定義的鼠標(biāo)圖片

 更新時間:2020年11月07日 09:10:11   作者:一只獨行的猿  
這篇文章主要介紹了Winform應(yīng)用程序如何使用自定義的鼠標(biāo)圖片,在window系統(tǒng)中,自帶的鼠標(biāo)外觀可能看起來比較小,因此我們需要使用自己的鼠標(biāo)圖片外觀

首先,建立圖片與鼠標(biāo)的對應(yīng)關(guān)系。

class MouseStyle
{
  [DllImport("user32.dll")]
  public static extern IntPtr SetCursor(IntPtr cursorHandle);


  static MouseStyle()
  {
    InitMouseStyle();
  }

  private static void InitMouseStyle()
  {
    if (Hand == null)
    {
      Hand = SetCursor("Image//Hand.png");
    }
    if (Arrow == null)
    {
      Arrow = SetCursor("Image//Arrow.png");
    }
  }
  /// <summary>
  /// 鼠標(biāo)手型樣式
  /// </summary>
  public static Cursor Hand = null;

  /// <summary>
  /// 鼠標(biāo)指針樣式
  /// </summary>
  public static Cursor Arrow = null;

  /// <summary>
  /// 設(shè)置鼠標(biāo)樣式
  /// </summary>
  /// <param name="fileName">自定義的鼠標(biāo)樣式文件</param>
  /// <returns>鼠標(biāo)樣式</returns>
  private static Cursor SetCursor(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.IO.Path.GetFileName(fileName).Equals("Hand.png"))
    {
      g.DrawImage(bit, bit.Width / 2 - 15, bit.Height / 2, bit.Width / 2, bit.Height / 2);
    }
    else
    {
      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.Dispose();

    return cursor;
  }
}

  如果是鼠標(biāo)文件.cur結(jié)尾,可以直接使用。

法1、在每一個窗體中單獨修改其中的鼠標(biāo)外觀,這樣鼠標(biāo)離開自己的程序后,也會恢復(fù)到系統(tǒng)默認(rèn)的鼠標(biāo)樣式。

  在上述類中,添加代碼:

/// <summary>
/// 設(shè)置鼠標(biāo)樣式
/// </summary>
/// <param name="col">控件</param>
public static void SetMouseStyle(Control col)
{
  InitMouseStyle();

  //設(shè)置窗體鼠標(biāo)為箭頭
  if (col is Form)
  {
    ((Form)col).Cursor = Arrow;
  }

  //遍歷控件,如果控件是箭頭或默認(rèn),就改為自定義的箭頭
  //如果是手型就改為自定義的手型
  foreach (Control con in col.Controls)
  {
    if (con.Cursor == Cursors.Hand)
    {
      con.Cursor = Hand;
    }
    if (con.Cursor == Cursors.Arrow || con.Cursor == Cursors.Default)
    {
      con.Cursor = Arrow;
    }

    //遞歸遍歷
    SetMouseStyle((Control)con);
  }
}

  然后在所有窗體中,均調(diào)用SetMouseStyle方法,傳入窗體自身

法2、修改系統(tǒng)鼠標(biāo),待程序退出時,還原系統(tǒng)鼠標(biāo)。首先添加代碼,調(diào)用window的API:

[DllImport("User32.DLL")]
public static extern bool SetSystemCursor(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/winuser/nf-winuser-setsystemcursor?redirectedfrom=MSDN
//OCR_APPSTARTING:標(biāo)準(zhǔn)箭頭和小的沙漏;32650
//OCR_NORMAL:標(biāo)準(zhǔn)箭頭 32512
//OCR_CROSS:交叉十字線光標(biāo): 32515
//OCR_HAND:手的形狀(WindowsNT5.0和以后版本) 32649
//OCR_HELP:箭頭和向東標(biāo)記; 32651
//OCR_IBEAM:I形梁; 32513
//OCR_NO:斜的圓 32648
//OCR_SIZEALL:四個方位的箭頭分別指向北、南、東、西 32646
//OCR_SIZENESEW:雙箭頭分別指向東北和西南; 32643
//OCR_SIZENS:雙箭頭,分別指向北和南 32645
//OCR_SIZENWSE:雙箭頭分別指向西北和東南; 32642
//OCR_SIZEWE:雙箭頭分別指向西和東 32644
//OCR_UP:垂直箭頭: 32516
//OCR_WAIT:32514 沙漏返回值:如果成功,返回非零值;如果失敗,返回值為零。

[DllImport("User32.DLL")]
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam,
 IntPtr pvParam, uint fWinIni);
public const uint SPI_SETCURSORS = 87;
public const uint SPIF_SENDWININICHANGE = 2;

  程序啟動和退出時分別調(diào)用設(shè)置方法和恢復(fù)方法:

private void button1_Click(object sender, EventArgs e)
{
  //設(shè)置
  SetSystemCursor(Cursors.WaitCursor.CopyHandle(), OCR_NORMAL);
  SetSystemCursor(Cursors.WaitCursor.CopyHandle(), OCR_IBEAM);
  //..可以根據(jù)情況加
}

private void button2_Click(object sender, EventArgs e)
{
  //恢復(fù)
  SystemParametersInfo(SPI_SETCURSORS, 0, IntPtr.Zero, SPIF_SENDWININICHANGE);
}

以上就是Winform應(yīng)用程序如何使用自定義的鼠標(biāo)圖片的詳細(xì)內(nèi)容,更多關(guān)于Winform 自定義鼠標(biāo)圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺析c# 線程同步

    淺析c# 線程同步

    這篇文章主要介紹了c# 線程同步的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-08-08
  • C#串口編程實例代碼

    C#串口編程實例代碼

    這篇文章主要為大家詳細(xì)介紹了C#串口編程實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • C#/Java連接sqlite與使用技巧

    C#/Java連接sqlite與使用技巧

    無意中發(fā)現(xiàn)的,C#/Java連接sqlite與使用技巧??戳讼?,還挺不錯的。與大家分享一下。
    2013-04-04
  • C# Newtonsoft.Json 解析多嵌套json 進(jìn)行反序列化的實例

    C# Newtonsoft.Json 解析多嵌套json 進(jìn)行反序列化的實例

    這篇文章主要介紹了C# Newtonsoft.Json 解析多嵌套json 進(jìn)行反序列化的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#如何實現(xiàn)圖片查看器

    C#如何實現(xiàn)圖片查看器

    這篇文章主要為大家詳細(xì)介紹了C#如何實現(xiàn)圖片查看器的相關(guān)方法,C#實現(xiàn)一個像Windows自帶的圖片查看器的功能,感興趣的小伙伴們可以參考一下
    2016-04-04
  • C#中字符串的加密的源碼

    C#中字符串的加密的源碼

    C#中字符串的加密的源碼...
    2007-03-03
  • C#利用Aspose.PDF實現(xiàn)PDF轉(zhuǎn)EPUB的完整指南

    C#利用Aspose.PDF實現(xiàn)PDF轉(zhuǎn)EPUB的完整指南

    在 .NET 開發(fā)中,Aspose.PDF 是一個強(qiáng)大的庫,能夠幫助我們處理 PDF 文件的各種任務(wù),包括將 PDF 轉(zhuǎn)換為其他格式,如 EPUB,本文將介紹如何使用 Aspose.PDF 在 C# 中實現(xiàn)將 PDF 轉(zhuǎn)換為 EPUB 的功能,需要的朋友可以參考下
    2025-02-02
  • c# 開發(fā)語音識別程序

    c# 開發(fā)語音識別程序

    這篇文章主要介紹了用c# 開發(fā)語音識別程序,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-09-09
  • c#開發(fā)cad預(yù)覽圖塊步驟詳解

    c#開發(fā)cad預(yù)覽圖塊步驟詳解

    在本篇文章里小編給大家分享了關(guān)于c#開發(fā)cad預(yù)覽圖塊步驟和相關(guān)知識點,需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • C#實現(xiàn)異步GET的方法

    C#實現(xiàn)異步GET的方法

    這篇文章主要介紹了C#實現(xiàn)異步GET的方法,涉及C#異步請求的相關(guān)實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

三河市| 姚安县| 大同市| 广南县| 苏尼特左旗| 岱山县| 宝丰县| 大竹县| 武陟县| 闸北区| 哈尔滨市| 龙川县| 济源市| 临安市| 西乌| 富锦市| 锡林浩特市| 元朗区| 富顺县| 赤峰市| 特克斯县| 五峰| 和顺县| 安福县| 盈江县| 缙云县| 扬州市| 汝南县| 景德镇市| 建平县| 寿阳县| 台中县| 岑溪市| 绍兴县| 沿河| 灌云县| 麟游县| 沙坪坝区| 湖州市| 台南市| 廉江市|