J'ai un PictureBox qui sert de toile. A List<RectangleObj>
la taille du tableau de aprox 8000.C# Slow Paint Event: peindre un grand nombre d'objets
Le "RectangleObj" est une simple classe rectangle, une fois que vous invoquez sa méthode Draw(Graphic g)
il attirera
- la frontière en utilisant
g.DrawRectangle(...)
et, - remplissage le rectangle avec une transparence alpha utilisant
g.FillRectangle(...)
Dans l'application Form.cs, j'utilise le pictureBox1_Paint(...)
pour boucler le tableau de RectangleObj
et invoquer la méthode Draw
de cette classe.
Comme ceci.
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
for (int i = 0; i < RectList.Count(); i++) //List<RectangleObj> count = 8000
RectList[i].Draw(e.Graphics);
}
Chaque fois que les clics de souris sur un RectangleObj
et fait glisser changer son emplacement (événement de déplacement de la souris) l'événement de peinture est appelée. Comme le tableau est grand, l'événement paint n'a pas assez de temps pour terminer sa boucle et est inondé de mouvements de souris. cela rend l'événement Paint lent.
Quelqu'un peut-il me conseiller comment optimiser cette procédure.
Merci .. je suis très sûr que cela ferait .. –
Pas besoin de s'inquiéter du point n ° 3, le contrôle PictureBox est déjà DoubleBuffered. – LarsTech