我编写了捕获屏幕截图的java代码。用户可以以秒为单位设置持续时间,例如20秒,然后20秒后将采取当前工作申请的截图。现在我希望通过允许用户设置以秒为单位捕获的屏幕截图数量来改进代码,就像用户设置ImageCnt=5
然后每隔20秒应该截取5个屏幕截图一样。代码就像....
int cnt = ImageCnt;
while(cnt!=0)
{
timerclass t=new timerclass(Time);//captures screenshot after specified Time
cnt--;
}
我的问题在于此代码。我希望在第一次完成之前不应该捕获第二个屏幕截图,在第二次完成之前不应该捕获第三个屏幕截图等等........ 在我的代码中,它同时捕获所有屏幕截图。
答案 0 :(得分:4)
听起来我不是要创建5个计时器,而是应该创建一个计时器,知道要截取多少个屏幕截图。然后,当计时器触发时,它可以一个接一个地接受。
很难确切地知道在没有看到其余代码的情况下会带来什么,但我建议将逻辑添加到屏幕截图捕获代码而不是设置定时器的代码。
答案 1 :(得分:1)
您需要timerclass
中的方法表明捕获已完成。
类似的东西:
while (cnt > 0) {
timerclass t = new timerclass(Time);
t.waitForCapture();
cnt--;
}
答案 2 :(得分:0)
我不明白每次Timer fires为你做5个截图的好处是什么。每个屏幕截图都需要几毫秒才能执行,那么屏幕上会发生什么变化?您可以创建第一张图像的副本,这样可以更有效地拍摄新的屏幕图像。
我也可能使用Swing Timer来安排屏幕截图,以便在EDT中创建图像,这意味着GUI在创建图像的同时不会尝试重新绘制自己。
我使用ScreenImage类来创建我的图像。