在计时器C#Winforms中移动图片框

时间:2015-02-23 18:23:37

标签: c# winforms timer 2d picturebox

好的,请保持答案非常直接,我必须说我对C#很新,我不知道很多东西。没有进一步的问题我的问题。 我试图在计时器上横向移动一个图片框。计时器必须无限进行。我已经尝试过我目前在C#中所知道的所有内容并且搜索了很多但是没有回答我的确切问题,这是我需要的,因为我对C#的了解较少。在过去的两个星期里,我主要从事图形工作,其余部分试图让它工作,所以我的游戏中没有代码。这是因为任何工作我需要这部分工作。我的游戏是2D自上而下。任何和所有的帮助表示赞赏。

感谢您抽出宝贵时间阅读。

修改

不需要更多答案,感谢Odrai的回答,它给了我很多帮助。

4 个答案:

答案 0 :(得分:1)

使用pictureBox.Location = new Point(x,y)或设置pictureBox.Left / Top / Right。您可以将x和y定义为变量,并使用默认值对其进行初始化。计时器滴答时增加x。

样本1:

public partial class Form1 : Form
{
    private Random _random 

    public Form1()
    {
        InitializeComponent();
        _random = new Random();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        int x = _random.Next(0, 500);
        int y = _random.Next(0, 500);
        pictureBox1.Top += y;
        pictureBox1.Left += x;
    }
}

样本2:

private void timer1_Tick(object sender, EventArgs e)
{
  this.SuspendLayout();
  pictureBox.Location = new Point(picust.Location.X + 10, picust.Location.Y);
  this.ResumeLayout();
}

答案 1 :(得分:0)

将两个标题为LEFT和RIGHT的按钮添加到表单并编写以下代码。 它可能会给你一个想法,如何做简单的移动动画。

public partial class Form1 : Form
{
    int difference = 0;
    Timer timer = new Timer();
    public Form1()
    {
        InitializeComponent();
        timer.Interval = 15;
        timer.Tick += timer_Tick;
        timer.Start();
    }

    void timer_Tick(object sender, EventArgs e)
    {
        pictureBox1.Left += difference;
    }

    private void btnLeft_Click(object sender, EventArgs e)
    {
        difference = -2;
    }

    private void btnRight_Click(object sender, EventArgs e)
    {
        difference = 2;
    }
}

答案 2 :(得分:0)

尝试此代码将起作用:

private void timer1_Tick(object sender, EventArgs e)
{
    int width = this.Width; // get the width of Form.

    if(pictureBox1.Location.X > width - pictureBox1.Width) //to check condition if pic box is touch the boundroy of form width
    {
        pictureBox1.Location = new Point(1, pictureBox1.Location.Y); // pic box is set to the new point. here 1 is indicate of X coordinate.
    }
    else
    {
        pictureBox1.Location = new Point(pictureBox1.Location.X + 100, pictureBox1.Location.Y); // to move picture box from x coordinate by 100 Point.
    }

}

答案 3 :(得分:-1)

//尝试此//

picturebox1.Location = 0,0; ​​