在计时器 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;
好的,所以请保持非常直接的回答,我必须说我是 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;