C#多次从屏幕复制到同一文件

C#多次从屏幕复制到同一文件,c#,image,graphics,screenshot,C#,Image,Graphics,Screenshot,我正在尝试拍摄多个屏幕截图并将它们保存到一个文件中。然而,屏幕截图经常被体面地拍摄,为了不丢失任何一个,我当前的程序将为每个屏幕截图创建一个新文件。理想情况下,程序每次只需将最新的屏幕截图“附加”到单个文件中 代码如下: static Rectangle bounds = Screen.GetBounds(Point.Empty); static Size rectSize = new Size(bounds.Width, bounds.Height); public static vo

我正在尝试拍摄多个屏幕截图并将它们保存到一个文件中。然而,屏幕截图经常被体面地拍摄,为了不丢失任何一个,我当前的程序将为每个屏幕截图创建一个新文件。理想情况下,程序每次只需将最新的屏幕截图“附加”到单个文件中

代码如下:

static Rectangle bounds = Screen.GetBounds(Point.Empty);
static Size rectSize = new Size(bounds.Width, bounds.Height);
    public static void takeScreenshot(string path, int iteration, string filetype)
    {
        using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
        {
            using (Graphics g = Graphics.FromImage(bitmap))
            {
                g.CopyFromScreen(Point.Empty, Point.Empty, new Size
                    (rectSize.Width * iteration, rectSize.Height));
            }
            bitmap.Save(path + filetype);
        }
    }
iteration
是调用该方法的次数。我试图将下一个屏幕截图的宽度移动一个屏幕截图的宽度,同时保留其他屏幕截图,但它似乎无论如何都会覆盖文件。可以这样做吗?

试试这个

string n = string.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now);
bitmap.Save(path + n + filetype);

你必须读取保存的位图,创建一个包含保存的位图和新屏幕截图的新位图,然后将其保存到文件中。这在任何方面都不起作用,即使你让它工作,你也会用尽gdi内存来创建这样的位图。您可以在原始字节中执行此操作,但即使这样,您也必须不断重写文件以在扫描行上插入新的宽度。为自己省去一些麻烦,只需将它们存储在不同的文件中,它们将更易于使用。您可以保存多页TIFF图像。这里有一个例子:。Net中并不真正支持APing,但这里有一个库:。三思而后行。(
System.Windows.Media.Imaging
使处理多帧图像变得更容易。)看起来您正在尝试制作视频,而不是图像。您知道您的代码只是为每个屏幕快照创建一个新文件吗?这正是OP不想要的。