欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#繪制鼠標(biāo)指針的示例代碼

 更新時間:2024年01月10日 09:01:43   作者:Csharp 小記  
這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)將鼠標(biāo)的指針樣式給繪制成圖片,顯示或者保存下來,文中的示例代碼講解詳細(xì),需要的可以參考一下

前言

有用的沒用的,用的上的用不上的,能寫的不能寫的,反正想起來就寫了,比如這篇,好像一般也沒什么用,emmm,或許,做錄制軟件的時候可以用一下。

顧名思義,本篇主要就是來實現(xiàn)將鼠標(biāo)的指針樣式給繪制成圖片,顯示或者保存下來。以下會通過兩種方式實現(xiàn),一種是C#自帶的Cursor,另一種就是用Windows Api;下面分別寫下兩種方式的實現(xiàn)代碼以及優(yōu)勢和缺陷  

開發(fā)環(huán)境:.NET Framework版本:4.8

開發(fā)工具:Visual Studio 2022

實現(xiàn)步驟

第一種使用C#自帶的Cursor,這種方式使用起來比較簡單,但是沒辦法正確獲取到程序頁面以外的指針形狀

private void button1_Click(object sender, EventArgs e)
 {
     Graphics graphics = pictureBox1.CreateGraphics();
     graphics.Clear(pictureBox1.BackColor);
     int x=Cursor.Position.X;
     int y=Cursor.Position.Y;
     Cursor.Draw(graphics, new Rectangle(1,1,50,50));
     //以拉伸格式繪制
     // Cursor.DrawStretched(pictureBox1.CreateGraphics(), new Rectangle(1, 1, 50, 50));
     label1.Text = $"坐標(biāo):{x},{y}";
 }

第二種使用Windows Api,這種方式就比較全面,可以彌補(bǔ)上面那種方式的缺點。

/// <summary>
  /// 獲取鼠標(biāo)信息
  /// </summary>
  /// <param name="cInfo"></param>
  /// <returns></returns>
  [DllImport("user32.dll", EntryPoint = "GetCursorInfo")]
  private static extern bool GetCursorInfo(ref CURSORINFO cInfo);

  /// <summary>
  /// 將指定的圖標(biāo)從另一個模塊復(fù)制到當(dāng)前模塊。
  /// </summary>
  /// <param name="hIcon"></param>
  /// <returns></returns>
  [DllImport("user32.dll", EntryPoint = "CopyIcon")]
  private static extern IntPtr CopyIcon(IntPtr hIcon);

  /// <summary>
  /// 獲取有關(guān)指定圖標(biāo)或光標(biāo)的信息
  /// </summary>
  /// <param name="hIcon"></param>
  /// <param name="iInfo"></param>
  /// <returns></returns>
  [DllImport("user32.dll", EntryPoint = "GetIconInfo")]
  private static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO iInfo);
private (int x, int y, Bitmap bmp) CaptureCursor()
  {
      CURSORINFO cURSORINFO = new CURSORINFO();

      cURSORINFO.cbSize = Marshal.SizeOf(cURSORINFO);
      if (GetCursorInfo(ref cURSORINFO))
      {
          if (cURSORINFO.flags == 0x00000001)
          {
              IntPtr icon = CopyIcon(cURSORINFO.hCursor);

              ICONINFO iCONINFO;
              if (GetIconInfo(icon, out iCONINFO))
              {
                  int x = cURSORINFO.ptScreenPos.X - iCONINFO.xHotspot;
                  int y = cURSORINFO.ptScreenPos.Y - iCONINFO.yHotspot;
                  Bitmap bmp = Icon.FromHandle(icon).ToBitmap();
                  return (x, y, bmp);
              }
          }
      }
      return (0,0,null);
  }
private void button3_Click(object sender, EventArgs e)
  {
      var cursor = CaptureCursor();
      pictureBox1.Image = cursor.bmp;
      label1.Text = $"坐標(biāo):{cursor.x},{cursor.y}";
  }

下面看下實現(xiàn)效果,當(dāng)鼠標(biāo)在界面外時,我們主要通過Tab和Enter來觸發(fā)按鈕

實現(xiàn)效果

到此這篇關(guān)于C#繪制鼠標(biāo)指針的示例代碼的文章就介紹到這了,更多相關(guān)C#鼠標(biāo)指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于C#實現(xiàn)屏幕取色器的示例詳解

    基于C#實現(xiàn)屏幕取色器的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)屏幕取色器,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • unity實現(xiàn)錄音并保存本地

    unity實現(xiàn)錄音并保存本地

    這篇文章主要為大家詳細(xì)介紹了unity實現(xiàn)錄音并保存本地,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c#單例模式(Singleton)的6種實現(xiàn)

    c#單例模式(Singleton)的6種實現(xiàn)

    這篇文章主要介紹了c#單例模式(Singleton)的6種實現(xiàn) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • c# 操作word寫入特殊字符的實例

    c# 操作word寫入特殊字符的實例

    這篇文章主要介紹了c# 操作word寫入特殊字符的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • BootStrap mvcpager分頁樣式(get請求,刷新頁面)

    BootStrap mvcpager分頁樣式(get請求,刷新頁面)

    這篇文章主要介紹了BootStrap mvcpager分頁樣式(get請求,刷新頁面)的相關(guān)資料,通過引入相關(guān)文件,實現(xiàn)此功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • C#多線程系列之線程通知

    C#多線程系列之線程通知

    本文詳細(xì)講解了C#多線程中的線程通知,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#文件分割的方法

    C#文件分割的方法

    這篇文章主要介紹了C#文件分割的方法,針對小于等于64M文件和大于64M文件兩種情況分析了C#文件分割的實現(xiàn)技巧,需要的朋友可以參考下
    2015-07-07
  • C#實現(xiàn)老板鍵功能的代碼

    C#實現(xiàn)老板鍵功能的代碼

    最近在做項目中遇到需要增加個老板鍵功能,找一慣的方式,開始從網(wǎng)絡(luò)下手尋找: 關(guān)鍵字類似”C# 老板鍵“,一搜,一堆又一堆,然而出來的代碼大多數(shù)都不是太合適,下面給大家分享下自己的解決方案已經(jīng)一個網(wǎng)友的解決方案,有需要的小伙伴可以參考下。
    2015-05-05
  • C#實現(xiàn)狀態(tài)欄提示信息功能的示例

    C#實現(xiàn)狀態(tài)欄提示信息功能的示例

    今天小編就為大家分享一篇C#實現(xiàn)狀態(tài)欄提示信息功能的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • C# DirectShow預(yù)覽攝像頭并截圖

    C# DirectShow預(yù)覽攝像頭并截圖

    這篇文章主要為大家詳細(xì)介紹了C# DirectShow預(yù)覽攝像頭并截圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論