[英]Move an array of pictureboxes constantly C#
public int level = 1;
public PictureBox[] invaders;
public void spawn(int level)
{
int f = 0;
invaders = new PictureBox[100];
PictureBox invader = new PictureBox();
Bitmap img = (WindowsFormsApplication1.Properties.Resources.SpaceInvader);
for (int n = 32; n < (4 + level)*32; n=n+32)
{
for (int i = 90; i < 400; i = i + 37)
{
invaders[f] = new PictureBox();
invaders[f].Location = new Point(i, n);
invaders[f].Size = new Size(20, 15);
invaders[f].Image = img;
invaders[f].SizeMode = PictureBoxSizeMode.StretchImage;
invaders[f].BackColor = Color.Transparent;
this.Controls.Add(invaders[f]);
f++;
}
}
timer2.Interval = 10;
timer2.Start();
}
private void timer2_Tick(object sender, EventArgs e)
{
for (int i = 0; i < invaders.Length; i++)
{
invaders[i].Location = new Point(invaders[i].Location.X + 1, invaders[i].Location.Y);
}
}
错误:
SpaceInvaders.exe 中发生类型为“System.NullReferenceException”的未处理异常
所有图片移动一次,然后发生错误。 任何解决方案?
我建议使用 GDI 或 DirectX 在控件表面绘制图像。 这将非常快。 我相信你以前没有使用过 Directx,所以我建议你选择一些简单的例子来使用 Directx 渲染图像。 它真的很简单。
对于 GDI,您可以从这个简单的示例开始https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/how-to-render-images-with-gdi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.