每次都保存为新名称

时间:2013-04-21 22:33:49

标签: c#

我可以在计时器上保存屏幕截图,但是我怎么能将它保存为新名称而不是每次都覆盖?

Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                           Screen.PrimaryScreen.Bounds.Height);

Graphics graphics = Graphics.FromImage(bitmap as Image);

graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);

bitmap.Save(@"c:tempscreenshot.bmp", ImageFormat.Bmp);

5 个答案:

答案 0 :(得分:5)

您可以使用方便的方法:Path.GetRandomFileName()

Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
              Screen.PrimaryScreen.Bounds.Height);

Graphics graphics = Graphics.FromImage(bitmap as Image);

  graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);

bitmap.Save("c://" + Path.GetRandomFileName() + ".bmp", ImageFormat.Bmp);

答案 1 :(得分:3)

您每次只需要生成一个唯一的名称。有几种可能性。一种方法是在最后添加一个datetime-string:

Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
              Screen.PrimaryScreen.Bounds.Height);

Graphics graphics = Graphics.FromImage(bitmap as Image);

  graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);

bitmap.Save(@"c:tempscreenshot" + DateTime.Now.Ticks + ".bmp", ImageFormat.Bmp);

答案 2 :(得分:3)

使用整数(或其他一些数字类型)并在计时器中递增它。然后使用类似的方法调用save方法:

bitmap.Save(string.Format("c:tempscreenshot.{0}.bmp", counter), ImageFormat.Bmp);

或使用GUID:

bitmap.Save(string.Format("c:tempscreenshot.{0}.bmp", Guid.NewGuid().ToString("N")), ImageFormat.Bmp);

答案 3 :(得分:1)

您可以根据当前时间每次生成一个新文件名。像这样:

string GenerateFilename() {
    string file = DateTime.Now.ToString("yy.MM.dd HH.mm.ss") + ".bmp";
    return @"C:\" + file;
}

使用这种方法的好处是,当您浏览保存文件的文件夹时,将对它们进行排序。

然后在现有代码中使用它:

bitmap.Save(GenerateFilename(), ImageFormat.Bmp);

您还可以在文件名前添加任何文本(如image-或其他内容)。

另一个选项是在文件名的末尾添加一个整数,就像一些复制处理程序那样。

答案 4 :(得分:1)

已经有了一些东西:Path.GetTempFileName()