【发布时间】:2010-01-27 12:31:49
【问题描述】:
我正在使用 C# .NET 截取第二台显示器的内容并将其显示在主屏幕的窗口中。
我的代码是:
screenShotGraphics.CopyFromScreen(
Screen.AllScreens[screen].Bounds.X,
Screen.AllScreens[screen].Bounds.Y,
0,
0,
Screen.AllScreens[screen].Bounds.Size,
CopyPixelOperation.SourceCopy);
当它被按钮点击触发时效果很好,因为轻微的延迟并不明显,但是当它自动运行时(比如每隔几秒),用户可以很容易地注意到他们的鼠标“锁定”了一段时间秒。
显然这并不理想。那么有没有更快的方法来执行这个操作呢? (或者在不中断鼠标移动或交互的情况下执行它的方法?
【问题讨论】:
-
您在截屏的同时还做其他事情吗?例如,如果您调整图像大小然后复制它,您可以将任务拆分并在中间延迟执行它们。那么延迟可能不会那么明显。
-
底层 Windows API 调用 (BitBlt) 在复制位图时会暂时隐藏鼠标。你无法解决这个问题。
标签: c# windows performance