profesor08
@profesor08

Почему пропадают нарисованные объекты на PictureBox, если меняется картинка?

Суть вопроса, я создаю объект PictureBox image. Далее задаю ему картинку image.Image = (BitMap)Image.FromFile("img1.jpg");
Далее, я жму кнопку, по клику на которой, меняется картинка у image на другую, а после этого я рисую там-же прямоугольник. Но происходит не то, что ожидается. Прямоугольник отрисовывается на доли секунды и перекрывается картинкой. Так как этого избежать?
Пример кода:
public void button_click()
        {

            Graphics g = Graphics.FromHwnd(this.image.Handle);
            Pen pen = new Pen(Color.Red, 2);
            this.image.Image = (Bitmap)Image.FromFile("img2.jpg");
            g.DrawRectangle(pen, new Rectangle(10, 10, 5, 5));

        }
  • Вопрос задан
  • 4470 просмотров
Решения вопроса 2
@mayorovp
Нельзя так просто рисовать на контролах формы - такие вещи надо делать в событии Paint. Или, раз уж вы загружаете картинку в PictureBox - рисуйте на этой картинке, а не на контроле.
Ответ написан
Комментировать
profesor08
@profesor08 Автор вопроса
Вот оно как просто оказывается.
Bitmap img = (Bitmap)Image.FromFile("image.jpg");
Pen pen = new Pen(Color.Red, 2);

using (var graphics = Graphics.FromImage(img))
{
    graphics.DrawRectangle(pen, new Rectangle(10, 10, 5, 5));
}

this.image.Image = img;


Спасибо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы