在运行时移动图片框会导致过多的延迟
本文关键字:延迟 移动 运行时 | 更新日期: 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,以及每个刻度,以便使其非常慢。 也许只是在创建数组后将数组设置为全局,那么您只需要检查交集。 但即使只是在循环之前加载一次点也可能有很大帮助。 不过,您实际上只需要在关卡开始时执行一次。