我想做一个功能。
每个计时器滴答都会闪烁绿色 并且每隔一个计时器滴答它将关闭绿色。
我的获胜形式中有一个计时器,间隔为100毫秒。
所以 每隔200毫秒,我的颜色会闪烁为绿色..
你可以帮我解决吗?
这不起作用
var green = (((float)System.Environment.TickCount / 100) % 2) != 0;
if (green==true)
{
greenColor);
if (green==false)
{
noColor);
}
答案 0 :(得分:5)
因为你有两种状态(颜色或没有颜色),每次我建议使用bool
并在计时器结束时反转它的值 - 如下所示:
bool tick;
private void theTimer_Tick( object sender, EventArgs e )
{
if(tick)
{
colorLabel.BackColor = Color.Red;//Using label as example
}
else
{
colorLabel.BackColor = Color.Green;
}
tick = !tick;//Invert tick bool
}
这样你就不需要计时器的时间,也不需要计算各种各样的东西。
答案 1 :(得分:0)
你快到了。不要使用(float)
。使用整数运算。
bool green = (System.Environment.TickCount / 100) % 2 == 0;
如果您使用浮点余数(我不推荐),那么您的测试不应该是== 0
它应该是< 1
。否则,当除法余数精确为零时,它仅为绿色1 ms。
bool green = (((float)System.Environment.TickCount / 100) % 2) < 1;