C#實現(xiàn)繪制鼠標的示例代碼
更新時間:2022年12月23日 09:16:54 作者:芝麻粒兒
這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)繪制鼠標的效果,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
實踐過程
效果
代碼
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private int _X, _Y; [StructLayout(LayoutKind.Sequential)] private struct ICONINFO { public bool fIcon; public Int32 xHotspot; public Int32 yHotspot; public IntPtr hbmMask; public IntPtr hbmColor; } [StructLayout(LayoutKind.Sequential)] private struct CURSORINFO { public Int32 cbSize; public Int32 flags; public IntPtr hCursor; public Point ptScreenPos; } [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")] private static extern int GetSystemMetrics(int mVal); [DllImport("user32.dll", EntryPoint = "GetCursorInfo")] private static extern bool GetCursorInfo(ref CURSORINFO cInfo); [DllImport("user32.dll", EntryPoint = "CopyIcon")] private static extern IntPtr CopyIcon(IntPtr hIcon); [DllImport("user32.dll", EntryPoint = "GetIconInfo")] private static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO iInfo); private void Form1_Load(object sender, EventArgs e) { } private Bitmap CaptureCursor(ref int _CX, ref int _CY) { IntPtr _Icon; CURSORINFO _CursorInfo = new CURSORINFO(); ICONINFO _IconInfo; _CursorInfo.cbSize = Marshal.SizeOf(_CursorInfo); if (GetCursorInfo(ref _CursorInfo)) { if (_CursorInfo.flags == 0x00000001) { _Icon = CopyIcon(_CursorInfo.hCursor); if (GetIconInfo(_Icon, out _IconInfo)) { _CX = _CursorInfo.ptScreenPos.X - _IconInfo.xHotspot; _CY = _CursorInfo.ptScreenPos.Y - _IconInfo.yHotspot; return Icon.FromHandle(_Icon).ToBitmap(); } } } return null; } private void button1_Click(object sender, EventArgs e) { int x = Control.MousePosition.X; int y = Control.MousePosition.Y; pictureBox1.Image = CaptureCursor(ref x, ref y); } }
到此這篇關于C#實現(xiàn)繪制鼠標的示例代碼的文章就介紹到這了,更多相關C#繪制鼠標內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用C#實現(xiàn)數(shù)據(jù)結(jié)構(gòu)堆的代碼
這篇文章主要介紹了使用C#實現(xiàn)數(shù)據(jù)結(jié)構(gòu)堆,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法
這篇文章主要介紹了C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法,需要的朋友可以參考下2015-09-09