【发布时间】:2014-08-23 14:41:53
【问题描述】:
我想制作一个小动画(简单的图片只是为了看看它是如何工作的)并且必须做一天的研究才能想出这个:
private void pictureBox1_Click(object sender, EventArgs e)
{
for (int imgNum = 1; imgNum <= 5; imgNum++)
{
System.Threading.Thread.Sleep(300);
pictureBox1.Image = (Image)(Properties.Resources.ResourceManager.GetObject(string.Format("Circle{0}", imgNum)));
}
}
但是,当我运行此程序时,程序会显示第一张图像,等待 1.2 秒(睡眠时间),然后继续显示最后一张图像。我记得做过一个使用 Application.DoEvents() 做某事的练习,所以我尝试了一下,图片显示正确。
private void pictureBox1_Click(object sender, EventArgs e)
{
for (int imgNum = 1; imgNum <= 5; imgNum++)
{
Application.DoEvents();
System.Threading.Thread.Sleep(300);
pictureBox1.Image = (Image)(Properties.Resources.ResourceManager.GetObject(string.Format("Circle{0}", imgNum)));
}
}
我的问题是 Application.DoEvents() 是如何使图像显示的。 Application.DoEvents() 的目的是什么?有没有更好的方式来显示动画?
是的,我是初学者。
【问题讨论】:
-
使用带有 Refresh 的计时器,而不是 DoEvents 和 Sleep。见Use of Application.DoEvents()
-
@LarsTech 我如何访问 ShowDialog()?
-
这与您的问题有什么关系?我在您的问题中没有看到 ShowDialog。
-
@LarsTech 您确实提供了一个指向明确提到 ShowDialog() 的答案的链接,实际上是多次。
标签: c# animation picturebox windows-forms-designer