【发布时间】: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