Поле с изображением становится пустым - PullRequest
3 голосов
/ 05 декабря 2008

В VisualBasic.Net Когда я активирую графический блок, а затем рисую на нем что-то, он рисует, а затем сразу гаснет. Прекрасно работает, когда я перерисовываю его, но почти всегда портится при первом рисовании. Это произошло с несколькими различными программами, и файл справки не помог.

Ответы [ 6 ]

1 голос
/ 11 марта 2013

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

1 голос
/ 05 декабря 2008

Попробуйте установить свойство DoubleBuffered

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.doublebuffered.aspx

Если это не так, предоставьте больше информации.

0 голосов
/ 06 декабря 2008

Если вы не можете использовать DoubleBuffered, вы можете скрыть вторую графическую рамку. Вы делаете рисунок в нем, и как только он завершен, вы возвращаетесь к ВИДИМОМУ. Таким образом, процесс рисования выполняется на скрытом, а белое / мерцание не будет отображаться.

0 голосов
/ 06 декабря 2008

Да, я полагаю, что использую стандартную картинную коробку.

Под Paint-Handler я предполагаю, что вы имеете в виду обработчик [Control] .PaintEvent. Нет, я не использую обработчик событий для рисования ... рисование моей диаграммы - это не событие само по себе, а часть гораздо большего отклика на событие нажатия кнопки.

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

0 голосов
/ 06 декабря 2008

Я предполагаю, что вы используете стандартный компонент PictureBox. Вы рисуете в Paint-Handler? Если нет, то PictureBox просто сотрет ваши нарисованные объекты в следующий раз, когда его попросят перерисовать себя (стереть фон и т.

0 голосов
/ 05 декабря 2008

Спасибо, Андрей, но без помощи. Я использую .Net Framework 1.1, которая не предлагает свойство DoubleBuffered ... оно было новым в 2.0.

Не уверен, какую дополнительную информацию предоставить .. код длиной 300 строк. При нажатии кнопки код расширяет мою форму, делает видимыми два графических блока (один поверх другого (задний - для некоторых графических надписей), а затем использует некоторые графические кисти и ручки для рисования графика на передней панели. окно. В фоновом режиме одновременно выполняются операции с базами данных и выполняются вычисления.

...