Практическое руководство. Уменьшение эффекта дрожания изображения посредством двойной буферизации для форм и элементов управления
Двойная буферизация использует буфер памяти для решения проблем мерцания, связанных с несколькими операциями рисования. Если двойная буферизация включена, все операции рисования сначала обрабатываются в буфере памяти вместо области рисования на экране. После завершения всех операций рисования буфер памяти копируется непосредственно в связанную с ним область рисования. Поскольку на экране выполняется лишь одна графическая операция, исключается мерцание со сложными операциями рисования. Для большинства приложений по умолчанию двойной буферизации .NET Framework обеспечит лучшие результаты. Стандартные элементы управления Windows Forms являются двойной буферизации по умолчанию. Вы можете включить двойную буферизацию в формах и элементах управления двумя способами. Можно либо установить DoubleBuffered свойства true
, либо путем вызова SetStyle метод, чтобы задать OptimizedDoubleBuffer флаг true
. Оба метода включает двойной буферизации по умолчанию для формы или элемента управления и обеспечения отрисовки графики без мерцания. Вызов SetStyle рекомендуется только для пользовательских элементов управления, для которых вы написали весь код отрисовки.
Для более сложных сценариях буферизации, например при анимации или сложном управлении памятью можно реализовать свою собственную логику для двойной буферизации. Дополнительные сведения см. в разделе Как Управление буферизацией графики.
Чтобы снизить мерцание
Задайте для свойства DoubleBuffered значение
true
.DoubleBuffered = true;
- или -
Вызовите SetStyle метод, чтобы задать OptimizedDoubleBuffer флаг
true
.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);