成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# winForm自定義鼠標樣式的兩種方法

開發 后端
鼠標樣式需要通過API來自定義。本文介紹了C#自定義鼠標樣式的兩種方法,可以避免自定義鼠標變成單色。

以前試過在C# WinForm中自定義鼠標樣式,結果顯示出來的鼠標變成單色。

后來百度了下,原來要用API來做。

首先引入兩個命名空間

  1. using System.Runtime.InteropServices;  
  2. using System.Reflection; 

C# winForm自定義鼠標樣式方法一

導入API

  1. [DllImport("user32.dll")]  
  2. ublic static extern IntPtr LoadCursorFromFile(string fileName);  
  3.  
  4. [DllImport("user32.dll")]  
  5. ublic static extern IntPtr SetCursor(IntPtr cursorHandle);  
  6.  
  7. [DllImport("user32.dll")]  
  8. ublic static extern uint DestroyCursor(IntPtr cursorHandle);  

接下來使用自己的鼠標樣式 

  1. private void Form1_Load(object sender, EventArgs e)  
  2.   {  
  3.       Cursor myCursor = new Cursor(Cursor.Current.Handle);  
  4.       IntPtr colorCursorHandle = LoadCursorFromFile("my.cur");//鼠標圖標路徑  
  5.         myCursor.GetType().InvokeMember("handle", BindingFlags.Public |  
  6.       BindingFlags.NonPublic | BindingFlags.Instance |  
  7.       BindingFlags.SetField, null, myCursor,  
  8.      new object[] { colorCursorHandle });  
  9.      this.Cursor = myCursor;  
  10.   }  

C# winForm自定義鼠標樣式方法之二

現在介紹另一種不用API方式的,鼠標樣式只需要一張背景透明的圖片就行了,png或gif格式的

寫個方法 

  1. public void SetCursor(Bitmap cursor, Point hotPoint)  
  2.   {  
  3.      int hotX = hotPoint.X;  
  4.      int hotY = hotPoint.Y;  
  5.       Bitmap myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);  
  6.       Graphics g = Graphics.FromImage(myNewCursor);  
  7.       g.Clear(Color.FromArgb(0, 0, 0, 0));  
  8.       g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width,   
  9.       cursor.Height);  
  10.  
  11.      this.Cursor = new Cursor(myNewCursor.GetHicon());  
  12.       
  13.       g.Dispose();  
  14.       myNewCursor.Dispose();  
  15.   }  

在你想要改變鼠標樣式的事件里頭使用這個方法就行了

  1. private void Form1_Load(object sender, EventArgs e)  
  2.  {  
  3.      Bitmap a=(Bitmap)Bitmap.FromFile("myCur.png");  
  4.      SetCursor(a, new Point(0, 0));  
  5.  }       //this.btnBack.FlatStyle = FlatStyle.Flat;    //set the button no frame  
  6. //this.btnBack.FlatAppearance.BorderSize = 0;  

C# winForm自定義鼠標樣式舉例:

Test.cs

  1. using System;   
  2. using System.Drawing;   
  3. using System.Windows.Forms;   
  4. using System.Runtime.InteropServices;   
  5. using System.Reflection;   
  6.  
  7. namespace ColorCursor   
  8. {   
  9. /// < summary>   
  10. /// 本例子的作用:   
  11. /// 在.NET中實現彩色光標,動畫光標和自定義光標。   
  12. /// < /summary>   
  13. public class Form1 : System.Windows.Forms.Form   
  14. {   
  15. [DllImport("user32.dll")]   
  16. public static extern IntPtr LoadCursorFromFile( string fileName );   
  17.  
  18. [DllImport("user32.dll")]   
  19. public static extern IntPtr SetCursor( IntPtr cursorHandle );   
  20.  
  21. [DllImport("user32.dll")]   
  22. public static extern uint DestroyCursor( IntPtr cursorHandle );   
  23.  
  24.  
  25. [STAThread]   
  26. static void Main()   
  27. {   
  28. Application.Run(new Form1());   
  29. }   
  30.  
  31. public Form1()   
  32. {   
  33. this.Text = "歡迎光臨【孟憲會之精彩世界】:http://dotnet.aspx.cc/";   
  34. Cursor myCursor = new Cursor(Cursor.Current.Handle);   
  35. //dinosau2.ani為windows自帶的光標:   
  36. IntPtr colorCursorHandle = LoadCursorFromFile(@"C:\WINNT\Cursors\dinosau2.ani" );   
  37. myCursor.GetType().InvokeMember("handle",BindingFlags.Public |   
  38. BindingFlags.NonPublic | BindingFlags.Instance |   
  39. BindingFlags.SetField,null,myCursor,   
  40. new object [] { colorCursorHandle } );   
  41. this.Cursor = myCursor;   
  42. }   
  43. }   
  44. }     

 

【編輯推薦】

  1. C#多線程控制進度條之長任務操作
  2. C#多線程控制進度條之長異步操作
  3. C#多線程控制進度條之異步調用
  4. C#多線程控制進度條之多線程安全
  5. C# listview進度條顯示淺析
責任編輯:book05 來源: hi.baidu
相關推薦

2009-08-05 13:34:18

C#日期相減

2009-09-02 16:21:02

C#解析Html

2009-08-17 08:29:00

c#刪除指定文件

2009-08-21 18:02:41

C#快捷鍵

2009-09-11 11:04:23

C# WinForm自

2009-08-25 11:35:27

C#連接數據庫

2009-08-03 17:53:11

XML數據

2009-08-04 08:58:01

C#自定義特性

2025-02-10 10:52:34

WinForm窗口閃爍C#

2009-08-04 12:56:51

C#自定義事件

2010-08-04 17:41:52

掛載NFS

2009-08-03 13:34:06

自定義C#控件

2009-08-28 17:45:19

C#自定義數據

2009-08-03 13:39:46

C#自定義用戶控件

2009-09-03 15:46:57

C#自定義事件

2009-08-17 17:24:02

C#自定義消息框

2009-08-04 13:07:46

C#自定義快捷鍵

2009-08-04 13:31:35

C#自定義事件

2009-09-25 14:04:09

Hibernate eHibernate h

2010-04-13 09:50:44

Oracle跟蹤
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产99久久精品一区二区永久免费 | 久久99视频这里只有精品 | 精品日韩一区 | 亚洲网站在线观看 | 免费一级毛片 | 亚洲不卡av在线 | 亚洲精品一区中文字幕乱码 | 夜夜操天天干 | 色呦呦在线 | 欧美日韩三级 | 男女视频91| 色婷婷综合久久久中文字幕 | 久久毛片 | 中文字幕在线一区 | www.亚洲一区二区 | 国产视频久久 | 国产欧美日韩综合精品一区二区 | 美女激情av | 中文字幕在线观看 | 欧美一级淫片免费视频黄 | 国产在线网址 | 国产福利在线免费观看 | 国产精品一区二区无线 | 天堂素人约啪 | 日一日操一操 | 久久久精品久久 | 欧美日韩亚洲国产综合 | 日本久久精品视频 | 欧美精品在欧美一区二区少妇 | 欧美日韩视频网站 | 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区大片 | 亚洲精品中文在线 | 91在线精品秘密一区二区 | 亚洲精品久久国产高清情趣图文 | 精品国产精品三级精品av网址 | 色婷婷综合久久久中字幕精品久久 | 日本小电影在线 | 欧美综合久久久 | 亚洲成人精品 | 国产精品一区二区视频 |