带定时器的C#动画闪烁背景

时间:2017-06-01 20:34:47

标签: c# animation timer flicker

我试图为我的C#程序制作动画。有一个太空火箭,垂直上升8个像素,定时器间隔为25ms。我已设法制作动画,但由于图片框的背景(我用于火箭)被设置为透明,每次移动时它都会闪烁形式的背景图像。我该怎么做才能阻止它?

Screenshot

我用于计时器刻度的代码:

pictureBox1.Top -= 8;
P.S:我试图用面板改变图片框,慢慢击落火箭和计时器,但似乎没有任何改变。

1 个答案:

答案 0 :(得分:1)

我现在还没有尝试过。 需要有一个渲染事件,您可以将其挂钩并对UI进行操作,以便顺利渲染。

Control.Paint

尝试以下内容:

private void Form1_Load(object sender, System.EventArgs e)
{  
     pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
}

private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{ 
      pictureBox1.Top -= 8;
}

再次对此进行了测试,并且我还没有在winforms中开发任何东西。 但这是你应该顺利渲染事物的方向。

在某些情况下,上面提到的双缓冲事物也是一个因素。 但这主要是做到这一点的方式。