L4zySh4rk Posted August 16, 2023 Posted August 16, 2023 Иногда у приложений написанных на Delphi проявляется одна маленькая, но неприятная проблема – при перерисовке VCL-контрола он "мерцает". Для ее решения разработчики Delphi добавили наследникам TWinControl свойство DoubleBuffered (тип boolean). Если DoubleBuffered имеет значение false, то контрол рисует себя непосредственно в окне. Если DoubleBuffered имеет значение true, то контрол рисует себя сначала на bitmap в памяти, а затем bitmap рисуется на окне. Двойная буферизация уменьшает мерцание, но требует больше памяти. Кроме повышенного расхода памяти есть и более существенные проблемы. Например, зависание VCL-приложений при работе через удаленные рабочий стол (RDP). Этой проблемой страдала даже сама IDE RAD Studio. Любое изменение сеанса RDP (блокировка, разблокировка, подключение, отключение) вызывает изменение общесистемных настроек (WM_SETTINGCHANGE), которое приводит к каскаду сообщений и множеству перерисовок IDE. Устранили это только в RAD Studio 10.4.2. В Delphi 12 механизм двойной буферизации VCL-контролов был доработан.Просмотреть полный текст статьи
Recommended Posts