Как нарисовать изображения на панелях без перекраски? - PullRequest
0 голосов
/ 08 января 2012

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

Я делаю это на событии Paint (..).

Но если я переместлю окно приложения, то форма и все элементы управления перекрасятся.

Как я могу уйти от этого? Может быть, мне стоит сменить событие на живопись? Я пытался нарисовать событие Load (..), но приложение ничем не рисует в панели таким образом.

Ответы [ 2 ]

0 голосов
/ 08 января 2012

Только используемые детали нарисованы приложением.Поэтому, когда части, которые ранее не были видны, открываются (перемещая это окно или окна над ним или изменяя размеры, минимизируя / максимизируя и т. Д.), Необходимо перерисовать недостающие части, что вы и видите.

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

В этом случае вы рисуете свои вещи на холсте растрового изображения вместо холста формы.

0 голосов
/ 08 января 2012

Вы не можете избавиться от Repaint(), так как это фундаментальная OS функция.

Имо, вы беспокоитесь о переворачивании после изменения размера.Чтобы решить эту проблему, вы можете сделать как в мой ответ .

Вы можете использовать Pictureboxes вместо их рисования и, кстати, не забудьте включить двойную буферизацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...