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

5 に答える 5

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);
于 2013-04-21T22:37:45.683 に答える
3

毎回一意の名前を生成するだけです。いくつかの可能性があります。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" + DateTime.Now.Ticks + ".bmp", ImageFormat.Bmp);
于 2013-04-21T22:36:31.333 に答える
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);
于 2013-04-21T22:36:55.580 に答える
1

そのためのものがすでにあります: Path.GetTempFileName()

于 2013-04-21T22:39:09.903 に答える
1

現在の時刻に基づいて、毎回新しいファイル名を生成できます。このようなもの:

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

このアプローチを使用することの良い点は、ファイルを保存しているフォルダーを参照すると、ファイルが並べ替えられることです。

次に、既存のコードで使用します。

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

image-ファイル名の前に任意のテキスト (など) を追加することもできます。

別のオプションは、一部のコピー処理プログラムが行うように、ファイル名の末尾に整数を追加することです。

于 2013-04-21T22:38:01.340 に答える