C# 以串行方式保存屏幕截图

C# 以串行方式保存屏幕截图,c#,.net,C#,.net,我试图在用户中断时捕获屏幕截图,但我已经尽力获取一个屏幕截图,并使用硬编码文件名保存它。事情是这样的: Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); gfxScreenshot = Graphics.FromImage(bmpScreenshot); gfxScreensho

我试图在用户中断时捕获屏幕截图,但我已经尽力获取一个屏幕截图,并使用硬编码文件名保存它。事情是这样的:

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);
问题是,这使我能够拍摄一个屏幕截图,我需要同时保存多个屏幕截图。我找不到一个合适的方法来做到这一点,而不是硬编码,同时破坏代码。我真的很感谢你在这方面的帮助


谢谢

截图部分可能很快,无论发生什么都需要进行。 您可以拍摄许多屏幕截图,然后保存它们。您可以使用以下方法来执行此操作:

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
,但这可能是一种过度杀伤力。

难道不能在循环中执行代码吗?在循环中执行代码只需获取快照并替换早期的快照。我还需要以前的照片。很明显,你每次都需要更改文件名。