我想要一个闪烁的LED - 交替地在PictureBox中点亮,然后是暗图像 - 在运行期间出现(我点击一个按钮开始)。运行开始时图像亮起,运行结束时图像变暗。这总是有效的。
此代码:
this.timer.SynchronizingObject = this;
this.timer.Interval = 250;
this.timer.Elapsed += (s, ea) =>
{
this.ledLit = !this.ledLit;
ShowInLog(this.ledLit ? "/" : "\\");
this.picMarking.BackgroundImage = this.ledLit ? this.imageStopped : this.imageRunning;
this.picMarking.Refresh();
};
非常适合在跑步期间显示闪烁的LED图像......每隔一次运行。
在每个偶数编号的调用中,交替斜线的显示表明计时器正在工作,但背景图像不会更新(除了可能是罕见的闪烁)。
为什么呢?如何使其适用于每次调用?
答案 0 :(得分:0)
这是我为你的“闪烁”效果放在一起的一些快速代码:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Blinker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Interval = 250;
timer1.Tick += timer1_Tick;
timer1.Start();
}
void timer1_Tick(object sender, EventArgs e)
{
Console.WriteLine("Tick");
pictureBox1.BackColor = (pictureBox1.BackColor == System.Drawing.Color.Red) ? System.Drawing.Color.Black : System.Drawing.Color.Red;
}
}
}
我在计时器的Tick事件中使用事件处理程序来触发闪烁。您可以使用BackColor属性调整图像。这是一种快速而肮脏的方法,但它实现了眨眼效果。
答案 1 :(得分:0)
我在这里找到了问题的答案:Custom event handler is repeating itself...
我的问题是我每次都订阅了tick事件,而不只是一次。