将一组图片框不断移动到C# public int level=1; 公共图片盒[]入侵者; 公共无效生成(整数级) { int f=0; 入侵者=新图片盒[100]; PictureBox入侵者=新PictureBox(); 位图img=(WindowsFormsApplication1.Properties.Resources.SpaceInvader); 对于(整数n=32;n
错误: SpaceInvaders.exe中发生类型为“System.NullReferenceException”的未处理异常将一组图片框不断移动到C# public int level=1; 公共图片盒[]入侵者; 公共无效生成(整数级) { int f=0; 入侵者=新图片盒[100]; PictureBox入侵者=新PictureBox(); 位图img=(WindowsFormsApplication1.Properties.Resources.SpaceInvader); 对于(整数n=32;n,c#,C#,错误: SpaceInvaders.exe中发生类型为“System.NullReferenceException”的未处理异常 所有图片移动一次,然后发生错误。有解决方案吗?我建议使用GDI或DirectX在控件表面绘制图像。 这将是非常快的。我相信您以前没有使用过directx,所以我建议您选择一些简单的示例来使用directx渲染图像。其实很简单 对于GDI,您可以从这个简单的示例开始 哪一行引发异常?入侵者[i]。位置=新点(入侵者[i]。位置.X+1,入侵者[i]。位置.Y);入侵者阵
所有图片移动一次,然后发生错误。有解决方案吗?我建议使用GDI或DirectX在控件表面绘制图像。 这将是非常快的。我相信您以前没有使用过directx,所以我建议您选择一些简单的示例来使用directx渲染图像。其实很简单 对于GDI,您可以从这个简单的示例开始
哪一行引发异常?入侵者[i]。位置=新点(入侵者[i]。位置.X+1,入侵者[i]。位置.Y);入侵者阵列中并非所有位置都已填满。为什么不使用列表而不是数组?无法初始化数组中100个图片框中的一个。很难说哪一个,我不容易理解你的
spawn
逻辑。嵌套循环中的结束条件和步骤非常混乱。我将数组切换为列表,现在所有内容都在移动。但我仍然有一个问题,一切都变得非常缓慢。有人知道如何解决这个问题吗?
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);
}
}