我不确定如何解决这个问题,但想象一下像这样的2D游戏 迟早这个家伙会到达表格的末尾(如果表格没有重新绘制/扩展),那么当人们到达当前表格的中间时如何重绘背景,这样我们的角色才能在意义上,永远地走着。想想那些2d跑步游戏,如飞扬的鸟类或喷气背包兜风,你可以在那里散步或飞行无限。此外,仅在角色移动时才会更改表单大小。
答案 0 :(得分:1)
这是一种粗暴的方法,希望它有助于你前进。基本上只需创建一个与表单一样高的图片框和两倍宽的图片框,将背景图像加载到其中,然后在计时器中将图片移到左侧。你需要一个非常宽的图像,除非你制作最后一帧"否则它在转换时会显得有点生涩。匹配第一个。
更改从左侧减去的数量将控制滚动的速度,因此我将该变量命名为#34;速度"。
public partial class Form1 : Form
{
private int scrollSpeed = 10;
Timer timer = new Timer();
private PictureBox backgroundPictureBox;
private void Form1_Load(object sender, EventArgs e)
{
Width = 1000;
Height = 1000;
backgroundPictureBox = new PictureBox
{
BackgroundImageLayout = ImageLayout.Stretch,
Height = this.Height,
Image = Image.FromFile(@"f:\Public\Temp\tmp.png"),
Left = 0,
SizeMode = PictureBoxSizeMode.StretchImage,
Visible = true,
Width = this.Width * 2
};
Controls.Add(backgroundPictureBox);
timer.Interval = 1;
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
if (backgroundPictureBox.Left < (Width * -1))
{
backgroundPictureBox.Left = 0;
}
else
{
backgroundPictureBox.Left -= scrollSpeed;
}
}
}