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

C# Animation with timer flickers the background

我正在尝试为我的 C# 程序制作动画。有一个 space 火箭,垂直上升 8 个像素,定时器间隔为 25 毫秒。我已经设法制作了动画,但是由于图片框的背景(我已经用于火箭)设置为透明,所以每次移动时它都会闪烁表单的背景图像。我能做些什么来防止它?

我用于计时器滴答的代码:

pictureBox1.Top -= 8;

P.S: 我试过用面板改变图片框,减慢火箭和计时器但似乎没有任何改变。

好吧,我自己现在还没有尝试过。 需要有一个渲染事件,你可以挂钩它并对你的 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 中开发任何东西了。 但这是您应该顺利渲染事物的方向。

上面提到的双缓冲在某些情况下也是一个因素。 但这主要是这样做的方法。