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

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

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

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

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

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

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

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

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

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

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

Перебираем список свойств известной structure в C#

Июль 8, 2022 г.

Мне нужен был выбор цвета из некоторой палитры, и я обнаружил подходящий список в пакете SkiaSharp, где определена структура SKColors, перечисляющая статические значения цветов. Вот такой список: [crayon-673eb5e86cc8e034063497/] Я хотел получить ...

Читать

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

Июнь 28, 2022 г.

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

Читать

 

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

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



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