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