在运行时移动PictureBox导致太多滞后

时间:2016-02-25 19:17:26

标签: c#

我是C#的新手,我遇到了一些困难。我的表单面板中有80个图片框。当我运行我的程序时,它会导致性能下降。我在运行时的pictureBox会导致滞后。我不知道为什么会发生这种情况,也许是因为我有大量的PictureBoxes?请有人帮我解决这个问题吗?我在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();

            }
        }
    }

1 个答案:

答案 0 :(得分:0)

这是PacMan类型的游戏吗?看起来你正在加载点并且每次检查一个时都会对每个点进行FindControl,以及所有每个滴答声以便让它变得非常慢。也许只要在创建数组后使其成为全局数组,那么您只需要检查交集。但即使只是在循环之前加载一次点可能会有很大帮助。不过,你应该只需要在关卡的开头做一次。