Используйте двойную буферизацию, чтобы предотвратить мерцание при рисовании на C#

Пример Нарисуйте цветную кривую бабочки в C# показывает, как рисовать красочную кривую бабочки. Не упоминая об этом, я использовал двойную буферизацию в этой программе, чтобы избежать мерцания во время рисования. Чтобы использовать двойную буферизацию, просто установите для формы DoubleBuffer свойство true.

При использовании двойной буферизации система выделяет отдельный фрагмент памяти для хранения изображения формы. Когда обработчик события Paint рисует форму, система использует этот образ в памяти. Когда он будет завершен, система отобразит изображение формы одновременно. Если рисунок сложный, как в этом примере, это предотвращает просмотр пользователем мерцающего изображения по мере того, как программа рисует его.

Когда вы проверяете этот флажок Double Buffer этого примера, программа включает или отключает двойную буферизацию и затем перерисовывает. Вы также можете нажать кнопку «Перерисовать», чтобы принудительно выполнить перерисовку.

Следующий код показывает, как этот флажок включает и выключает двойную буферизацию.

// Включение и выключение двойной буферизации и перерисовка.
private void chkDoubleBuffer_CheckedChanged(
    object sender, EventArgs e)
{
    this.DoubleBuffered = chkDoubleBuffer.Checked;
    this.Refresh();
}

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

Источник: http://csharphelper.com/blog/2014/11/use-double-buffering-to-prevent-flicker-when-drawing-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector