Перерисовка без мерцания в C# WPF

Классика задач связанной с анимацией. Требуется так перерисовать картинку, чтобы пользователь не видел мерцания, связанного с очисткой объекта canvas.

Почему возникает эффект мерцания при перерисовке?

Обычно это связано с техникой создания следующего кадра. Он рисуется как бы с нуля, всё объекты стираются, картинка заливается фоном, и начинается прорисовка объектов согласно последним изменениям сцены.

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

Для того чтобы избежать данного эффекта — используют буферизацию. Новый кадр создаётся в памяти, а потом копируется на canvas, полностью подготовленный к показу. Пользователь не видит мерцания, вызванного полной очисткой кадра перед перерисовкой.

Пример реализации двойной буферизации в C#

Рассмотрим метод ReDraw, который обновляет (рендерит и выводит) нарисованное изображение. Изображение состоит из массива эллипсов, которые движутся по некоторому алгоритму, который в данной статье не важен.

В качестве буфера мы используем объект Bitmap. В месте, где выполняется вывод эллипсов и заливка — вы можете подставить ваш код.

Написать комментарий

Мало букафф? Читайте есчо !

Опыт работы с C# Xamarin

Июнь 28, 2022 г.

Что такое Xamarin - следует почитать отдельно. Вкратце, это платформа с идеологией .NET, позволяет писать код сразу для разных платформ - iOS, Android, Win. Меня интересовала возможность на знакомом языке (C#), написать что либо под Android. Я ...

Читать

Использование canvas на C# Xamarin

Июль 3, 2022 г.

Это часть статьи по опыту создания приложения с использованием C# Xamarin для Android платформы. Canvas - это общий для разных платформ подход к работе с графикой, он обычно материализуется в специфичном для языка / платформы объекте, который так и ...

Читать

 

Комментарии к «Перерисовка без мерцания в C# WPF»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: