繁体   English   中英

不断移动一组图片框 C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM