带计时器的C#动画闪烁背景
C# Animation with timer flickers the background
我正在尝试为我的 C# 程序制作动画。有一个 space 火箭,垂直上升 8 个像素,定时器间隔为 25 毫秒。我已经设法制作了动画,但是由于图片框的背景(我已经用于火箭)设置为透明,所以每次移动时它都会闪烁表单的背景图像。我能做些什么来防止它?
我用于计时器滴答的代码:
pictureBox1.Top -= 8;
P.S: 我试过用面板改变图片框,减慢火箭和计时器但似乎没有任何改变。
好吧,我自己现在还没有尝试过。
需要有一个渲染事件,你可以挂钩它并对你的 UI 进行操作,这样可以顺利渲染。
试试这些:
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 中开发任何东西了。
但这是您应该顺利渲染事物的方向。
上面提到的双缓冲在某些情况下也是一个因素。
但这主要是这样做的方法。
我正在尝试为我的 C# 程序制作动画。有一个 space 火箭,垂直上升 8 个像素,定时器间隔为 25 毫秒。我已经设法制作了动画,但是由于图片框的背景(我已经用于火箭)设置为透明,所以每次移动时它都会闪烁表单的背景图像。我能做些什么来防止它?
我用于计时器滴答的代码:
pictureBox1.Top -= 8;
P.S: 我试过用面板改变图片框,减慢火箭和计时器但似乎没有任何改变。
好吧,我自己现在还没有尝试过。 需要有一个渲染事件,你可以挂钩它并对你的 UI 进行操作,这样可以顺利渲染。
试试这些:
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 中开发任何东西了。 但这是您应该顺利渲染事物的方向。
上面提到的双缓冲在某些情况下也是一个因素。 但这主要是这样做的方法。