逐渐移动图片框,而不是立即移动

时间:2015-12-15 19:46:42

标签: c# winforms

我有一个PictureBox,我想在点击按钮后在y轴上向上移动。问题是,按钮单击后,PictureBox只会出现在那里。我希望它能够转移到新的位置,而不是传送。我该怎么办?

public partial class Form1 : Form
{
    Point stageplus1 = new Point(164, 325);

    public Form1()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        pictureBox5.Location = stageplus1;
    }

    private void pictureBox5_Click(object sender, EventArgs e)
    {

    }
}

1 个答案:

答案 0 :(得分:1)

扩展BJ Myers comment这就是您实现这一目标的方法:

private void button2_Click(object sender, EventArgs e)
{
    this.timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)
{    
    // calculate new position
    this.pictureBox1.Top++;
    this.pictureBox1.Left++;

    // when to stop
    if (this.pictureBox1.Top > (this.Height - (2 * this.pictureBox1.Height)))
    {
        this.timer1.Enabled = false;
    }
}

我使用默认的Timer控件,以一定间隔引发Tick。 Tick事件在UI线程上执行,因此您不必为跨线程错误打扰。

如果添加到您的表单中,这就是您将获得的:

Kenny moves

如果你需要动画更多的东西,你可能想要使用背景工作者和助手类来研究,比如我在this answer of mine中显示的