Le graphique du panneau ira après que le formulaire soit minimisé, C #

J’ai un panneau dans mon formulaire nommé Pan_Paint et j’ai le code ci-dessous:

 Graphics graph = Pan_Paint.CreateGraphics(); graph.FillEllipse(new SolidBrush(Blue), 10, 10, 100, 100); 

Lorsque je réduis le formulaire et que je le rétablis, la ligne disparaîtra. Ou quand j’appuie sur Tab Button, la même chose se passera. Que puis-je faire pour résoudre ce problème? Je vous remercie.

C’est basique.

Vous devez soit mettre en cache tous les dessins dans certaines structures de données et les dessiner dans l’événement Paint . Encore et encore, chaque fois que Windows a besoin de restaurer l’écran.

Vous appelez initialement l’événement Paint en effectuant un Panel.Invalidate() chaque fois que vous avez ajouté des actions de dessin à vos files d’attente de dessin.

Aucun moyen de contourner cela autre que:

Dessinez-les dans l’ image d’un PictureBox (pas seulement sur le PictureBox!) ..

Voici le code pour bien faire les choses avec un PictureBox et aussi comment le faire mal:

  // this will change the Image of a PictureBox, assuming it has one. // These changes are persistent: using (Graphics G = Graphics.FromImage(pictureBox1.Image)) { G.DrawEllipse(Pens.Red, new Rectangle(0, 0, 444, 444)); pictureBox1.Invalidate(); } // This is the wrong, non-persistent way to paint, no matter which control: //The changes go away whenever the Window is invalidated: using (Graphics G = pictureBox2.CreateGraphics() ) { G.DrawEllipse(Pens.Green, new Rectangle(0, 0, 444, 444)); } 

Créez plutôt une classe d’actions de dessin et passez en boucle sur une liste d’entre elles dans l’événement Paint!