【问题标题】:C# CopyFromScreen multiple times to same fileC# CopyFromScreen 多次复制到同一个文件
【发布时间】:2018-08-20 02:14:46
【问题描述】:

我正在尝试截取多个屏幕截图并将它们保存到一个文件中。但是,屏幕截图经常被很好地拍摄,为了不丢失任何截图,我当前的程序将简单地为每个屏幕截图创建一个新文件。理想情况下,程序每次都会简单地将最近的屏幕截图“附加”到单个文件中。

代码如下:

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 是该方法被调用的次数。我试图将下一个屏幕截图移动一个屏幕截图的宽度,同时保留所有其他屏幕截图,但它似乎无论如何都会覆盖文件。可以这样做吗?

【问题讨论】:

  • 您将不得不读取保存的位图,创建一个包含您保存的位图和新屏幕截图的新位图,然后将其保存到文件中。
  • 这在任何方面都不起作用,即使你让它工作,你也会用尽 gdi 内存来尝试创建这样的位图。您可以在原始字节中执行此操作,但即使如此,您也必须继续重写文件以在扫描行上插入新宽度。省去一些麻烦,然后将它们存储在不同的文件中,它们会更容易使用
  • 您可以保存多页 TIFF 图像。这里有一个例子:Convert bitmaps to one multipage TIFF image。 .Net 中并不真正支持 APing,但这里有一个库:APNG.NET - GitHub。再想一想。 (System.Windows.Media.Imaging 可以更轻松地处理多帧图像。)
  • 看起来您正在尝试制作视频,而不是图像。

标签: c# image graphics screenshot


【解决方案1】:

试试这个..

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

【讨论】:

  • 您明白您的代码只是为每个屏幕截图创建一个新文件吗?这正是 OP 想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2017-02-27
  • 1970-01-01
相关资源
最近更新 更多