Подтвердить что ты не робот

Какая разница между Refresh, Update и Repaint?

Я не знаю, какой из этих трех методов мне больше всего подходит. Все они работают для меня. Кто-нибудь знает разницу между Refresh, Update и Repaint?

4b9b3361

Ответ 1

Согласно онлайн-документации.

Refresh - Перекрашивает элемент управления на экране.

Метод обновления вызова, чтобы перерисовать немедленно контролировать. Обновить вызовы Перерисовать метод. Используйте Refresh и Перекрашивать методы взаимозаменяемо.

Repaint - заставляет элемент управления перерисовывать изображение на экране.

Переадресация вызова, чтобы заставить элемент управления перекрасить его изображение немедленно. Если Свойство ControlStyle включает csOpaque, сам контроль красит непосредственно. В противном случае перерисовать метод вызывает метод Invalidate и затем метод Update, чтобы любой видимые части элементов управления ниже управление будет также перекрашено.

Update - немедленно обрабатывает любые ожидающие сообщения с краской.

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

Обновление не отменяет но просто заставляет перекрашивать любых регионов, которые уже были аннулированной. Вызовите перерисовку вместо аннулировать контроль.

Ответ 2

На ваш вопрос уже ответили, но если вам нужна хорошая производительность и меньше мерцания, вы должны вместо этого вызвать Invalidate. Это позволяет Windows оптимизировать процесс рисования.

Invalidate - Полностью перерисовать элемент управления.

Использовать Invalidate, когда весь элемент управления необходимо перекрасить. Когда больше, чем один регион в рамках контроля перерисовка, Invalidate приведет к полное окно, которое должно быть перекрашено в один проход, избегая мерцания, вызванного путем избыточных рецензий. Здесь нет штраф за исполнение Недействительно несколько раз до контроль фактически перекрашен.

Ответ 3

В соответствии с уставом (CBuilder 6) VCL:

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

Фактическая перекраска не происходит до тех пор, пока элемент управления не будет обновлен. Чтобы принудительно перерисовать, вызовите перерисовку вместо этого.

Перерисовать "TWinControl:: Repaint вызывает метод Invalidate, а затем метод Update, чтобы перерисовать элемент управления" (небольшой парафраз).

(К сожалению, более старая ссылка лучше и полнее, чем новая ссылка, которую я имею (CBuilder 2007).