Member 10354564 Ответов: 2

При минимизации формы чертежи исчезают в C#


В настоящее время я работаю с c# Элемент управления PictureBox и столкнулся с одной проблемой. Я сделал рисунок громкой связи в изображении внутри коробки с картинками. Он красиво рисует на коробке с картинками.Но когда я сворачиваю форму и перезагружаю ее снова, рисунки исчезают. Любой может предложить решение этой проблемы… Спасибо…

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

Я просто применил этот код, но без изменений ...
Bitmap bmp = new Bitmap(ImagepictureBox.Image);

2 Ответов

Рейтинг:
2

RickZeeland

Поскольку вы разместили только одну строку своего кода, я могу только догадываться, но я думаю, что вы не использовали
Элемент управления PictureBox метод OnPaint обработчик событий, который дает вам графический объект для рисования.
Смотрите информацию здесь: Переопределение метода OnPaint | Microsoft Docs[^]


Рейтинг:
0

OriginalGriff

Когда вы рисуете на PictureBox, вы рисуете не на базовом растровом изображении - вы рисуете поверх растрового изображения. И если вы не сделаете рисунок внутри события Paint для PictureBox, используя информацию, которую вы сохранили, пока пользователь "рисовал от руки", он не будет обновлен, когда форма будет свернута (или даже когда другое приложение будет помещено поверх вашего, а затем удалено). Например, если вы рисуете на picturebox в обработчиках событий мыши, то рисунок не будет постоянным - он исчезнет при следующем возникновении события Paint.

Есть две вещи, которые вы можете сделать, чтобы предотвратить это:
1) Нарисуйте на растровом изображении, которое отображает PictureBox. Это означает получение графического контекста для изображения, рисование на нем, а затем освобождение контекста (и, вероятно, аннулирование PictureBox для принудительной перерисовки с помощью события Paint.
2) сохраните движения мыши в коллекции, аннулируйте PictureBox, а затем нарисуйте все движения из коллекции в обработчике событий PictureBox Paint.

Первое легче сделать, но вы не можете отменить изменения, сделанные пользователем.
Последний является более сложным, но позволяет отменить ошибки пользователя и вообще не изменяет растровое изображение.

Взгляните на это: Создание простого элемента управления "скретч-картой" в WinForms[^] он показывает способ рисования поверх изображения таким образом, чтобы оно вообще не касалось исходного изображения, но могло быть устойчивым.