Hướng dẫn cách thay đổi con trỏ chuột C#
Những sự kiện liên quan: MouseDown, MouseUp
Đầu tiên thêm các dòng code này vào Form
Mã:
using System.Runtime.InteropServices; public struct IconInfo{ public bool fIcon; public int xHotspot; public int yHotspot; public IntPtr hbmMask; public IntPtr hbmColor;}[DllImport("user32.dll")]public static extern IntPtr CreateIconIndirect(ref IconInfo icon);[DllImport("user32.dll")][return: MarshalAs(UnmanagedType.Bool)]public static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo); //public static Cursor CreateCursor(Bitmap bmp, int xHotSpot, int yHotSpot){ IntPtr ptr = bmp.GetHicon(); IconInfo tmp = new IconInfo(); GetIconInfo(ptr, ref tmp); tmp.xHotspot = xHotSpot; tmp.yHotspot = yHotSpot; tmp.fIcon = false; ptr = CreateIconIndirect(ref tmp); return new Cursor(ptr);}
Code hoàn chỉnh
Mã:
public partial class Form1 : Form { public struct IconInfo { public bool fIcon; public int xHotspot; public int yHotspot; public IntPtr hbmMask; public IntPtr hbmColor; } // Tạo 1 đối tưởng kiểu Bitmap => Vì con trỏ chuột của chúng ta là 1 cái hình Bitmap img; public Form1() { InitializeComponent(); } [DllImport("user32.dll")] public static extern IntPtr CreateIconIndirect(ref IconInfo icon); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetIconInfo(IntPtr hIcon, ref IconInfo pIconInfo); // public static Cursor CreateCursor(Bitmap bmp, int xHotSpot, int yHotSpot) { IntPtr ptr = bmp.GetHicon(); IconInfo tmp = new IconInfo(); GetIconInfo(ptr, ref tmp); tmp.xHotspot = xHotSpot; tmp.yHotspot = yHotSpot; tmp.fIcon = false; ptr = CreateIconIndirect(ref tmp); return new Cursor(ptr); } // Bắt sự kiện MouseDown của Form => Khi ta click chuột xuống là con trỏ chuột sẽ thay đổi private void Form1_MouseDown(object sender, MouseEventArgs e) { this.img = new Bitmap("Images/cursor_hand.png"); // Do hàm tạo con trỏ chuột là 1 hàm kiểu static nên ta dùng Form 1 gọi trực tiếp nó. this.Cursor = Form1.CreateCursor(img, 3, 3); //this.Cursor = CreateCursor(img, 3, 3); } // Khi thả chuột lên thì con trỏ chuột trở lại từ đầu. private void Form1_MouseUp(object sender, MouseEventArgs e) { Cursor cur = Cursors.Arrow; this.Cursor = cur; } }}
Di chuyển form với con trỏ chuột
Những sự kiện liên quan: MouseDown, MouseUp, MouseMove
Đầu tiên ta tạo 2 biến
Mã:
bool ismousedown = false; // Kiểm tra xem con trỏ chuột đã mousedown chưa Point mousedownPosition = new Point();
Nếu ismousedown = true thì con trỏ chuột đã click xuống cái Form => Sẽ nắm được cái Form di chuyển qua lại.
MouseDown
Mã:
private void Form1_MouseDown(object sender, MouseEventArgs e){ ismousedown = true; mousedownPosition.X = e.X; mousedownPosition.Y = e.Y; // this.img = new Bitmap("Images/cursor_hand.png"); this.Cursor = Form1.CreateCursor(img, 3, 3);}
MouseUp
Mã:
private void Form1_MouseUp(object sender, MouseEventArgs e){ ismousedown = false; Cursor cur = Cursors.Arrow; this.Cursor = cur;}
MouseMove
Mã:
private void Form1_MouseMove(object sender, MouseEventArgs e){ if (ismousedown == true) { Point newPoint = new Point(); newPoint.X = this.Location.X + (e.X - mousedownPosition.X); newPoint.Y = this.Location.Y + (e.Y - mousedownPosition.Y); this.Location = newPoint; }}
Lưu ý: Cái hình ảnh thì các cậu bỏ vào trong thư mục Debug
Có thể tìm các Icon mấy con trỏ chuột ở đây: http://www.iconfinder.com/
Chúc thành công !!!
Hay thì thanks giùm mình!!!
View more random threads:
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...