График панели будет идти после минимизации формы, C #

У меня есть панель в моей форме с именем Pan_Paint и у меня есть код ниже:

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

Когда я уменьшу форму, и когда я ее восстановлю, линия исчезнет. Или, когда я нажимаю кнопку Tab, произойдет то же самое. Что я могу сделать, чтобы исправить это? Спасибо.

Это основное.

Вам нужно либо кэшировать весь чертеж в некоторых структурах данных, и их рисовать в событии Paint . Снова и снова, когда windows необходимо восстановить Экран.

Первоначально вы вызываете событие Paint, выполняя Panel.Invalidate() всякий раз, когда вы добавляете некоторые действия рисования в очереди рисования.

Ни в коем случае, кроме:

Нарисуйте их в изображение PictureBox (а не только на PictureBox!).

Вот код, чтобы сделать это правильно с PictureBox, а также, как это сделать неправильно:

  // 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)); } 

Вместо этого создайте class действий рисования и сверните их по списку в событии Paint!