SN25 Ответов: 1

Рисование и стирание графики из изображения в графическом окне с помощью C#


Всем привет,

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

Я хочу, чтобы при остановке потока данных графика исчезала, а затем снова появлялась, когда поток чтения данных возобновлялся. пожалуйста, скажите мне, как я могу это сделать??

Я делюсь блоком своего кода.

Что я уже пробовал:

bool draw;

private void Form1_Load(object sender, EventArgs e)
    {
        pictureBox1.Image = new Bitmap("Image.jpg");
        draw = true;
        Thread DataRead = new Thread (Data_Read);
        DataRead.Start();
    }
      public void DataRead()
    {
        //code for data reading//;
         
         if (data_read !=null)
           {
             draw = true;
           }
        else 
           {
             draw = false;
           }         
      }

private void picbox_paint(object sender, PaintEventArgs e)
    {
         if (draw == true)
        {
            e.Graphics.DrawImage(new Bitmap("interface.png"), Convert.ToInt32(x), Convert.ToInt32(w), 16, 16);
            e.Graphics.DrawImage(new Bitmap("interface.png"), Convert.ToInt32(z), Convert.ToInt32(y), 16, 16);
         }
         
        else
        {
          // what should I do in this part?
        }
 e.Dispose(); pictureBox1.invalidate();
    }

1 Ответов

Рейтинг:
2

OriginalGriff

Просто: не рисуйте на изображении. Когда вы рисуете на изображении, изменения являются полупостоянными-это "реальные" изменения самого изображения, но они не отражаются в файле, из которого появилось изображение, - поэтому единственный способ "отменить" их - это перезагрузить само изображение из исходного источника.

Если вам нужна "временная" графика, то либо поместите прозрачное изображение сверху и нарисуйте на нем, либо сохраните свои изменения и реализуйте их в событии Paint для PictureBox каждый раз, чтобы они рисовались в графическом контексте, который вам предоставляется. Таким образом, графика, которую вы рисуете сверху, может меняться каждый раз, когда это делают данные - все, что вам нужно сделать, это добавить новые значения в коллекцию, которую нужно нарисовать, и аннулировать PictureBox. Если данные останавливаются, вы приостанавливаете рисование из своей коллекции и возобновляете его, когда это происходит.


SN25

Спасибо Грифф за ваш ответ
Не могли бы вы объяснить мне, как разместить прозрачное изображение поверх изображения на коробке с картинками