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


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

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

См. также

Ссылки

DoubleBuffered

SetStyle

Основные понятия

Двойная буферизация графики

Другие ресурсы

Объекты Graphics и Drawing в Windows Forms