![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Проблема бесконечной перерисовки в обработчике OnPaint: как остановить цикл?Delphi , Графика и Игры , Компоненты и ГрафикаПроблема бесконечной перерисовки в обработчике OnPaintИногда при программировании на Delphi могут возникать ситуации, когда изменение свойств объекта вызывает его повторную перерисовку, что приводит к бесконечному циклу. В статье мы рассмотрим такую проблему на примере использования Описание проблемыРазработчик столкнулся с проблемой бесконечной перерисовки линии в Пример кодаДля воспроизведения проблемы создайте новое приложение VCL Forms, добавьте на форму
Почему это происходит?Изменение свойства Подтвержденное решениеДля решения проблемы следует изменять свойство шрифта канваса (
Это предотвращает бесконечную перерисовку, так как изменение свойства канваса не приводит к недействительности компонента. Альтернативный ответВ качестве альтернативного подхода можно использовать проверку на равенство перед изменением свойства шрифта:
Это позволит избежать лишних перерисовок в случае, если размер шрифта не изменился. Заключение и комментарииВ статье был рассмотрен пример бесконечной перерисовки в Обсуждение в комментариях касается того, что VCL мог бы использовать такие проверки внутри своих методов для предотвращения подобных ситуаций. Это действительно может быть полезным дополнением к стандартной библиотеке компонентов Delphi. Проблема заключается в бесконечной перерисовке объекта `TPaintBox` в Delphi из-за изменения свойств внутри обработчика события `OnPaint`. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Компоненты и Графика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |