C# WinForm按钮背景图像仅每隔运行一次更新
我希望在跑步过程中(我点击一个按钮开始)出现一个闪烁的LED——交替亮起,然后是图片盒中的一个暗图像。图像在跑步开始时亮起,跑步结束时变暗。这总是有效的 此代码:C# WinForm按钮背景图像仅每隔运行一次更新,c#,winforms,image,C#,Winforms,Image,我希望在跑步过程中(我点击一个按钮开始)出现一个闪烁的LED——交替亮起,然后是图片盒中的一个暗图像。图像在跑步开始时亮起,跑步结束时变暗。这总是有效的 此代码: this.timer.SynchronizingObject = this; this.timer.Interval = 250; this.timer.Elapsed += (s, ea) => { this.ledLit = !this.ledLit; ShowInLog(this.ledLit ? "/"
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图像…每隔一次跑步
在每次偶数调用中,交替斜杠的显示显示计时器正在工作,但背景图像不会更新(可能除了罕见的闪烁)
为什么??如何使它在每次调用时都能工作?以下是我为您的“闪烁”效果编写的一些快速代码:
我已经为计时器上的滴答事件使用了事件处理程序来触发闪烁。你可以像我使用BackColor属性一样调整图像。这是一种快速而肮脏的方法,但它实现了闪烁效果。我在这里找到了问题的答案:
我的问题是,我每次都订阅了勾号事件,而不是只订阅一次。首先你说:“跑步开始时图像会亮,跑步结束时图像会变暗。这总是有效的。”然后你说:“在跑步过程中显示闪烁的LED图像非常有效……每隔一次跑步。”这两种说法似乎不一致,你能再清楚一点吗?在跑步开始时,我将图像设置为亮起。这很有效。在跑步结束时,我将图像设置为暗。这很有效。在奇数运行时,当计时器启动时,图像交替显示。在偶数运行时,图像不会交替,而是保持亮起(直到它完成)。我的代码非常相似,可以实现闪烁效果。没有意义的是,为什么is只适用于奇数调用。您的代码如何解释这一点?
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;
}
}
}