背景
- 我正在编写一个屏幕捕获应用程序。
- 我的代码基于这个项目: http://www.codeproject.com/KB/cs/DesktopCaptureWithMouse.aspx?display=Print
- 请注意,该代码还可以捕捉鼠标指针(这对我很有用)。
问题描述
- 当鼠标指针是普通指针或手型图标时,代码可以正常工作 - 鼠标在屏幕截图中呈现为正确的样子。
- 然而,当鼠标指针变为插入点("I-beam" 光标)时 - 例如在 NOTEPAD 中输入文本 - 代码就无法正常工作了 - 结果是我得到了一个模糊的光标图像 - 它看起来像非常半透明的灰色版本,而不是我们期望的黑白版。
我的问题
- 如何在光标图像是 "I-beam" 类型之一时捕获鼠标光标图像?
- 注意:如果您单击原始文章,有人提供了一个建议 - 它行不通。
来源
这是来自原始文章。
static Bitmap CaptureCursor(ref int x, ref int y)
{
Bitmap bmp;
IntPtr hicon;
Win32Stuff.CURSORINFO ci = new Win32Stuff.CURSORINFO();
Win32Stuff.ICONINFO icInfo;
ci.cbSize = Marshal.SizeOf(ci);
if (Win32Stuff.GetCursorInfo(out ci))
{
if (ci.flags == Win32Stuff.CURSOR_SHOWING)
{
hicon = Win32Stuff.CopyIcon(ci.hCursor);
if (Win32Stuff.GetIconInfo(hicon, out icInfo))
{
x = ci.ptScreenPos.x - ((int)icInfo.xHotspot);
y = ci.ptScreenPos.y - ((int)icInfo.yHotspot);
Icon ic = Icon.FromHandle(hicon);
bmp = ic.ToBitmap();
return bmp;
}
}
}
return null;
}