Как сохранить существующие изображения на панели при перерисовке в c #?

#c# #image #panel #draw

#c# #изображение #панель #рисовать

Вопрос:

У меня есть панель, на которой я рисую изображения при нажатии кнопки. Но при втором нажатии кнопки ранее нарисованное изображение заменяется новым изображением.

 void panel_Image_Paint(object sender, PaintEventArgs e)
{
  if (Clipboard.ContainsImage())
  {
   Point p1 = new Point(i, 0);
   e.Graphics.DrawImage(Clipboard.GetImage(), p1);
   i  = img.Width;
  }
}
  

Я хочу сохранить ранее нарисованное изображение на панели, когда рисуется новое изображение. Буфер обмена обновляется при каждом нажатии кнопки новым изображением. Любая помощь была бы высоко оценена!!!!
Спасибо..

Ответ №1:

Я не уверен, как на самом деле работает событие рисования и что приводит к исчезновению ваших изображений, но вы можете попробовать добавить свои изображения в список, а затем выполнить цикл по списку, чтобы все ваши изображения отображались на панели. Попробуйте этот код:

     int i = 0;
    List<Image> Images = new List<Image>();
private void panel1_Paint(object sender, PaintEventArgs e)
    {
        if (Clipboard.ContainsImage())
        {
            Images.Add(Clipboard.GetImage());

            foreach (Image item in Images)
            {
                e.Graphics.DrawImage(item, new Point(i,0));
                i  = Clipboard.GetImage().Width;

            }
        }
        i = 0;
     }
  

Не забудьте вызвать функцию Invalidate.

 private void button1_Click(object sender, EventArgs e)
     {
        panel1.Invalidate();
     }