Поделиться через


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

Двойное буферизация использует буфер памяти для решения проблем с мерцанием, связанных с несколькими операциями рисования. При включении двойного буферизации все операции рисования сначала отрисовываются в буфер памяти вместо поверхности рисования на экране. После завершения всех операций рисования буфер памяти копируется непосредственно в область рисования, связанную с ней. Поскольку на экране выполняется только одна графическая операция, устраняется мерцание изображения, связанное со сложными операциями рисования. Для большинства приложений двойная буферизация, используемая по умолчанию в .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)
    
    

См. также