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

C#繪制鼠標指針的示例代碼

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

前言

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

顧名思義,本篇主要就是來實現(xiàn)將鼠標的指針樣式給繪制成圖片,顯示或者保存下來。以下會通過兩種方式實現(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 = $"坐標:{x},{y}";
 }

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

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

  /// <summary>
  /// 將指定的圖標從另一個模塊復(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)指定圖標或光標的信息
  /// </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 = $"坐標:{cursor.x},{cursor.y}";
  }

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

實現(xiàn)效果

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

相關(guān)文章

  • C#創(chuàng)建windows系統(tǒng)用戶的方法

    C#創(chuàng)建windows系統(tǒng)用戶的方法

    這篇文章主要介紹了C#創(chuàng)建windows系統(tǒng)用戶的方法,涉及C#操作用戶名、密碼、顯示名稱、描述、是否強制修改密碼、密碼是否過期等技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • LINQ基礎(chǔ)之Intersect、Except和Distinct子句

    LINQ基礎(chǔ)之Intersect、Except和Distinct子句

    這篇文章介紹了LINQ使用Intersect、Except和Distinct子句的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#使用DateTime獲取日期和時間的實現(xiàn)

    C#使用DateTime獲取日期和時間的實現(xiàn)

    在C#中,DateTime類是用來處理日期和時間的類,它具有許多屬性和方法,用于操作和獲取日期和時間的不同部分,本文就來介紹一下C#使用DateTime獲取,感興趣的可以了解一下
    2023-11-11
  • C#實現(xiàn)動態(tài)加載dll的方法

    C#實現(xiàn)動態(tài)加載dll的方法

    這篇文章主要介紹了C#實現(xiàn)動態(tài)加載dll的方法,涉及針對動態(tài)鏈接庫的靈活操作技巧,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • 最新評論

    台南县| 额敏县| 清涧县| 黑龙江省| 泸州市| 牙克石市| 屏东县| 北宁市| 阜阳市| 高淳县| 潜山县| 莆田市| 龙门县| 同江市| 上林县| 当涂县| 贵德县| 潜山县| 平阳县| 景谷| 攀枝花市| 庄浪县| 霍林郭勒市| 永登县| 比如县| 民乐县| 武邑县| 昌乐县| 洞头县| 靖江市| 大名县| 资中县| 永康市| 乌海市| 宿州市| 德昌县| 阿拉善盟| 大英县| 安义县| 宜都市| 东山县|