在运行时移动图片框会导致过多的延迟

本文关键字:延迟 移动 运行时 | 更新日期: 2023-09-27 18:36:11

我是C#的新手,遇到了一些困难。我的表单面板中有 80 个图片框。当我运行我的程序时,它会导致性能降低。运行时我的图片框会导致滞后。我不知道为什么会发生这种情况,也许是因为我有很多图片盒?请有人帮我解决这个问题吗? 我在pictureBoxe中有一个幽灵图像,还有一些食物(点)图片框中的图像。这是我的代码。

 private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.Left:
                GhostPictureBox.Left -= 5;
                break;
            case Keys.Right:
                GhostPictureBox.Left += 5;
                break;
            case Keys.Up:
                GhostPictureBox.Top -= 5;
                break;
            case Keys.Down:
                GhostPictureBox.Top += 5;
                break;
        }

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        GhostPictureBox.Left -= 5;
        PictureBox[] Dots = new PictureBox[80];

        for (int i = 0; i < Dots.Length; i++)
        {
            Dots[i] = (PictureBox)Controls.Find("pictureBox" + (i + 1).ToString(), true)[0];
            if (GhostPictureBox.Bounds.IntersectsWith(Dots[i].Bounds))
            {
                Dots[i].Hide();
            }
        }
    }

在运行时移动图片框会导致过多的延迟

这是一个吃豆人类型的游戏吗? 看起来您每次检查一个点时都会加载点并为每个点执行 FindControl,以及每个刻度,以便使其非常慢。 也许只是在创建数组后将数组设置为全局,那么您只需要检查交集。 但即使只是在循环之前加载一次点也可能有很大帮助。 不过,您实际上只需要在关卡开始时执行一次。