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

Moving a picture box in timer C# Winforms

好的,所以请保持非常直接的回答,我必须说我是 C# 的新手,我不知道很多东西。没有进一步再见我的问题。 我正在尝试在 timer.The 计时器必须无限运行的情况下在屏幕上水平移动图片框。我已经尝试了我目前在 C# 中所知道的一切,并进行了很多搜索,但没有回答我确切的问题,这是我需要的,因为我对 C# 的了解较少。在过去的两周里,我主要从事图形方面的工作,其余的时间都在努力让它发挥作用,所以我的游戏中没有代码。这是因为要使任何工作正常,我需要这部分工作。我的游戏是 2D topdown。感谢任何和所有帮助。

感谢您抽空阅读。

编辑

不用再回答了,谢谢Odrai的回答,对我帮助很大

使用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();
}

在窗体中添加标题为 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;
    }
}

试试这个代码它会起作用:

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.
    }

}

//试试这个 //

picturebox1.Location = 0,0;