只要用户中断,我就会尝试捕获屏幕截图,但是我已经远远地获得了一个屏幕截图并使用硬编码的文件名保存。它是这样的:
Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
bmpScreenshot.Save("Screenshot.jpeg", ImageFormat.Jpeg);
问题是这使我能够拍摄一个屏幕截图,我需要同时保存多个屏幕截图。如果没有硬编码并同时危及代码,我找不到合适的方法来做到这一点。我非常感谢你的帮助。
感谢。
答案 0 :(得分:3)
拍摄截图部分可能很快,无论如何都需要发生。 您可以拍摄许多屏幕截图并在以后保存。您可以使用ConcurrentQueue执行此操作:
Bitmap bmpScreenshot = Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height,PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
_queue.Enqueue(bmpScreenshot);
然后有一个出列并保存的帖子:
index = 0;
while (_queue.Count > 0)
{
Bitmap bitmap = null;
if (_queue.TryDequeue(out bitmap))
{
bitmap.Save("Screenshot" + index + ".jpeg", ImageFormat.Jpeg);
index++;
}
}
更强大的解决方案是使用TPL Dataflow
,但这可能是一种过度杀伤。