我可以在计时器上保存屏幕截图,但是我怎么能将它保存为新名称而不是每次都覆盖?
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 :(得分: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()