C# winForm 自訂滑鼠樣式的兩種方法

來源:互聯網
上載者:User

本文轉自:http://www.cnblogs.com/hzbzxm/archive/2008/09/15/1291104.html

以前試過在WinForm中自訂滑鼠樣式,結果顯示出來的滑鼠變成單色。

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

     首先引入兩個命名空間 

using System.Runtime.InteropServices;
using System.Reflection;

 匯入API 

        [DllImport("user32.dll")]
        public static extern IntPtr LoadCursorFromFile(string fileName);

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

        [DllImport("user32.dll")]
        public static extern uint DestroyCursor(IntPtr cursorHandle);

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

        private void Form1_Load(object sender, EventArgs e)
        {
            Cursor myCursor = new Cursor(Cursor.Current.Handle);
            IntPtr colorCursorHandle = LoadCursorFromFile("my.cur");//滑鼠圖示路徑
              myCursor.GetType().InvokeMember("handle", BindingFlags.Public |
            BindingFlags.NonPublic | BindingFlags.Instance |
            BindingFlags.SetField, null, myCursor,
            new object[] { colorCursorHandle });
            this.Cursor = myCursor;
        }

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

     寫個方法

        public void SetCursor(Bitmap cursor, Point hotPoint)
        {
            int hotX = hotPoint.X;
            int hotY = hotPoint.Y;
            Bitmap myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);
            Graphics g = Graphics.FromImage(myNewCursor);
            g.Clear(Color.FromArgb(0, 0, 0, 0));
            g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width, 
            cursor.Height);

            this.Cursor = new Cursor(myNewCursor.GetHicon());
           
            g.Dispose();
            myNewCursor.Dispose();
        }

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

        private void Form1_Load(object sender, EventArgs e)
        {
            Bitmap a=(Bitmap)Bitmap.FromFile("myCur.png");
            SetCursor(a, new Point(0, 0));
        }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.