Практическое руководство. Уменьшение эффекта дрожания изображения посредством двойной буферизации для форм и элементов управления

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

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

Уменьшение мерцания

  • Задайте для свойства DoubleBuffered значение true.

    DoubleBuffered = true;
    
    DoubleBuffered = True
    
    

- или -

  • Вызовите SetStyle метод, чтобы задать OptimizedDoubleBuffer для флага значение true .

    SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
    
    SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    
    

См. также