C# 每秒显示图标(倒计时)
我试图在我的表单上显示一种倒计时计时器。我的程序基本上是在满足某些条件后捕获用户的快照(通过网络摄像头)。一旦条件得到满足,我想显示一个倒计时计时器理想的图片为基础(通过启用图标,我在一个窗体上),然后捕获网络摄像头的图像 到目前为止,我一直在尝试使用一个计时器,所以在每个刻度上,它都会显示一个图标,一个刻度稍后会显示下一个。。etc然后捕获图像。到目前为止,我只能让它显示一个图标并拍摄一张图像,我不知道如何让图标在每个刻度上改变x秒 e、 gC# 每秒显示图标(倒计时),c#,timer,C#,Timer,我试图在我的表单上显示一种倒计时计时器。我的程序基本上是在满足某些条件后捕获用户的快照(通过网络摄像头)。一旦条件得到满足,我想显示一个倒计时计时器理想的图片为基础(通过启用图标,我在一个窗体上),然后捕获网络摄像头的图像 到目前为止,我一直在尝试使用一个计时器,所以在每个刻度上,它都会显示一个图标,一个刻度稍后会显示下一个。。etc然后捕获图像。到目前为止,我只能让它显示一个图标并拍摄一张图像,我不知道如何让图标在每个刻度上改变x秒 e、 g 如有任何帮助,我们将不胜感激。您可以定义计数器并计
如有任何帮助,我们将不胜感激。您可以定义计数器并计算计时器计时。使用
开关中的勾号计数器来定义在哪个时刻要执行的操作:
int _counter;
void timer1_Tick(object sender, EventArgs e)
{
_counter++;
switch(_counter)
{
case 1:
_1.Visibility = Visibility.Visible;
...
break;
case 10: // do something at 10th tick
_2.Visibility = Visibility.Visible;
...
break;
...
}
// capture image from webcam
_capture.Start()
}
既然您说要使用图标,那么似乎需要在其中添加逻辑,以便正确选择要显示的图标。例如,对于3秒倒计时,您必须添加代码以知道第一个刻度还剩3秒(以便显示3秒图标),第二个刻度还剩2秒,依此类推
换句话说,类似于:
// only example value; get a real one from another input/event handler
private int _countDownSeconds = 3;
public void webCamTimer_Tick(object sender, EventArgs e)
{
switch (_countDownSeconds--) {
case 3:
// show icon for 3 and return
break;
case 2:
// show icon for 2 and return
break;
case 1:
// show icon for 1 and return
break;
case 0:
// time to take picture
_webCam.TakeSnapshot();
break;
default:
// log a message, ask user to re-enter time limit,
// or simply re-assign a previously entered value;
// for example:
_countDownSeconds = Convert.ToInt32(userTimeLimitTextBox.Text);
break;
}
}
可能值得考虑的是,测试/维护可能更耗时,尤其是在需要更新倒计时计时器时(例如,将其更新为5秒而不是3秒,或者让其可由用户配置,等等)。此外,倒计时时间越长,您需要考虑的排列数就越多。您已经可以看到一个简单的3秒计时器的案例数量
从长远来看,将倒计时显示为数字的字符串
表示(例如ToString()
方法)可能是一个更好的主意
PS:您还应该使用.NET命名约定。您可以查看MSDN文档以了解更多有关这些的信息,但一般来说,只需查看您正在使用的.NET类/方法/属性中已有的命名模式。从您发布的问题和示例中,我了解到,对于每个勾号,您都希望从3个列表中显示一个图片。这可以通过以下方式实现:
static int count=1;
public void timer1_Tick(object sender, EventArgs e)
{
if(count==1)
{
_1.Visibility = Visibility.Visible;
_2.Visibility = Visibility.Collapsed;
_3.Visibility = Visibility.Collapsed;
count++;
}
else if(count==2)
{
_2.Visibility = Visibility.Visible;
_1.Visibility = Visibility.Collapsed;
_3.Visibility = Visibility.Collapsed;
count++;
}
else
{
_3.Visibility = Visibility.Visible;
_1.Visibility = Visibility.Collapsed;
_3.Visibility = Visibility.Collapsed;
count==1;
_capture.Start()
}
}
在\u capture.Start()方法中,确保停止计时器。否则计时器将继续运行,对该方法进行多次调用。此外,我认为\u counter=0调用条件满足函数时,应添加代码>。否则,它将不断增加,并且永远不会评估为一种切换情况。第一次就可以了。嗨,雷,我试过你的解决方案,效果不错。非常感谢您的帮助!:)
static int count=1;
public void timer1_Tick(object sender, EventArgs e)
{
if(count==1)
{
_1.Visibility = Visibility.Visible;
_2.Visibility = Visibility.Collapsed;
_3.Visibility = Visibility.Collapsed;
count++;
}
else if(count==2)
{
_2.Visibility = Visibility.Visible;
_1.Visibility = Visibility.Collapsed;
_3.Visibility = Visibility.Collapsed;
count++;
}
else
{
_3.Visibility = Visibility.Visible;
_1.Visibility = Visibility.Collapsed;
_3.Visibility = Visibility.Collapsed;
count==1;
_capture.Start()
}
}