Я новичок в C#, и у меня возникают некоторые трудности. У меня есть 80 pictureBoxes в панели моей формы. Когда я запускаю свою программу, это приводит к низкой производительности. Мои снимки в режиме исполнения приводят к задержке. Я не понимаю, почему это происходит, может быть, из-за нагрузок pictureBoxes, которые у меня есть? Пожалуйста, кто-нибудь может помочь мне с этим? У меня есть изображение Призрака в pictureBoxe. И некоторые изображения Food in (Dots) pictureBoxes также. Вот мой код.Перемещение PictureBox в Runtime Causes too much Lag
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();
}
}
}
80 картинных ящиков ... которые помнят меня, когда я начал изучать VB XD, пожалуйста, не делайте этого, игры не запрограммированы с помощью ящиков изображений, не используют DirectDraw, OpenGL или, по крайней мере, WPF, которые имеют аппаратное ускорение. – Gusman
Да, слишком много PictureBoxes. Избавьтесь от них всех и просто рисуйте изображения в событии краски контейнера. WinForm лучше работает в бизнес-приложениях, чем приложения, которые вы пытаетесь создать. – LarsTech
Это очень возможно с GDI +, но вы должны использовать только один кадр (или просто рисовать на фоне). –