C#软件开发实例.私人订制自己的屏幕截图工具(十)在截图中包含鼠标指针形状

本实例全部文章目录


在写一此帮助说明类的文档时,截取的图片如果还有鼠标的指针形状,看起来就更直观更友好一些。接下来就讲一下如何在截图中包含鼠标指针形状。

添加结构CURSORINFO:

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [StructLayout(LayoutKind.Sequential)]  
  2.         struct CURSORINFO  
  3.         {  
  4.             public int cbSize;  
  5.             public int flags;  
  6.             public IntPtr hCursor;  
  7.             public Point ptScreenPos;  
  8.         }  

声明API:

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [DllImport("user32.dll")]  
  2. static extern bool GetCursorInfo(out CURSORINFO pci);  

定义枚举值:

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. private const int CURSOR_SHOWING = 0x00000001;  

添加方法:

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /// <summary>  
  2. /// 将鼠标指针形状绘制到屏幕截图上  
  3. /// </summary>  
  4. /// <param name="g"></param>  
  5. private void DrawCursorImageToScreenImage(ref Graphics g)  
  6. {  
  7.     if (!this.IsCutCursor) { return; }  
  8.   
  9.     CURSORINFO vCurosrInfo;  
  10.     vCurosrInfo.cbSize = Marshal.SizeOf(typeof(CURSORINFO));  
  11.     GetCursorInfo(out vCurosrInfo);  
  12.     if ((vCurosrInfo.flags & CURSOR_SHOWING) != CURSOR_SHOWING) return;  
  13.     Cursor vCursor = new Cursor(vCurosrInfo.hCursor);  
  14.     Rectangle vRectangle = new Rectangle(new Point(vCurosrInfo.ptScreenPos.X - vCursor.HotSpot.X, vCurosrInfo.ptScreenPos.Y - vCursor.HotSpot.Y), vCursor.Size);  
  15.   
  16.     vCursor.Draw(g, vRectangle);  
  17. }  

添加方法调用:

OK,再去截图看看吧!

posted @ 2015-09-21 21:02  星空天宇  阅读(214)  评论(0编辑  收藏  举报