2013-04-21 53 views
-1

我可以在定时器上保存屏幕截图,但是如何将它保存为新名称并且不会每次都覆盖?每次保存为新名称

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); 
+0

可能是你可以在名称附加当前日期时间试试。 – Sachin 2013-04-21 22:36:48

+0

你不需要'像位图一样'。只需使用“位图”。 – Ryan 2013-04-21 22:42:23

回答

3

您只需要每次生成一个唯一的名称。有几种可能性。之一将是在末尾添加一个日期时间字符串:

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); 
+0

非常感谢你,我真的很感激。你让我今天一整天都感觉很好。如果我可以做任何事情来报答你,只要说出来。在Twitter上关注? iTunes的审查?再次感谢 – user2305454 2013-04-21 22:48:52

+0

没问题,乐意帮忙。如果你有兴趣,这是我的推特处理:@Kennethtruyers – Kenneth 2013-04-21 22:51:16

3

使用一个整数(或其他数值类型)和你的计时器内加一。然后用像打电话给你的保存方法:

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); 
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

您可以生成新的文件名,每次基于当前时间。事情是这样的:

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

关于使用这种方法的好处是,当你浏览你在哪里保存文件的文件夹,它们进行排序。

,然后用它在你的现有代码:

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

您也可以在前面加上任何文本(如image-或东西)的文件名。

另一种选择是将一个整数附加到文件名的末尾,就像一些拷贝处理程序一样。