【问题标题】:Taking Screenshot after 1 minute [closed]1分钟后截图[关闭]
【发布时间】:2017-10-16 22:09:00
【问题描述】:

我有两个问题:

1.如何在每 1 分钟后截屏一次,按下一个键例如

  1. 10:00: -> 按键 -> Img1
  2. 10:01: -> 按键 -> Img2
  3. 10:02: -> 按键 -> Img3

2.假设我的程序运行 5-10 分钟,我如何迭代图像链

  string ImgPath = @"D:\"Img" + iteration + ".bmp";
  Bitmap btmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
  Graphics g = Graphics.FromImage(btmp);
  g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, btmp.Size, CopyPixelOperation.SourceCopy);

如果(按下任意键)
if(时差为 1 分钟)
btmp.Save(ImgPath, System.Drawing.Imaging.ImageFormat.Bmp);

另外,如果有更好的截图方法,请在这里分享。

谢谢!

【问题讨论】:

  • 您是否尝试过获取两次连续按键之间的时间差。
  • @BhubanShrestha 我正在寻找下一个屏幕截图之间的一分钟延迟,而不是两个连续的按键。
  • @J.Doe 你不想在拍照时发现 1 分钟的差异吗?如果照片是提前 1 分钟拍的,那么再拍一张,否则不要拍。你的本意不就是这样吗。

标签: c# datetime screenshot timespan stopwatch


【解决方案1】:

您要做的是在拍照时启动(或重新启动)Stopwatch。然后,每当按下某个键时,您都会检查秒表是否已经运行了至少一分钟。如果有,您拍照并重置秒表。总体思路:

// Start the clock when the program starts.
private Stopwatch _pictureTimer = Stopwatch.StartNew();

// Wait this long between pictures
private readonly TimeSpan _pictureWaitTime = TimeSpan.FromMinutes(1.0);

// Come here when key is pressed.
if (_pictureTimer.Elapsed > _pictureWaitTime)
{
    // take the screen shot
    // and then reset the stopwatch
    _pictureTimer.Restart();
}

如果您想为图片编号,请保留一个您每次更新的变量。当程序启动时,你初始化它:

private int _pictureNumber = 1;

每当你拍照时,你都会增加它。也就是说,重置秒表后,只需:

_pictureNumber = pictureNumber + 1;

【讨论】:

    猜你喜欢
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    相关资源
    最近更新 更多