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

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

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

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

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

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

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

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

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

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

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

Переключение страниц в приложении C# Xamarin (Android)

Июль 4, 2022 г.

Даже самое простое приложение содержит несколько страниц. Минимально - это основная страница и страница с настройками. В данной статье я покажу пример как реализовать переключение между страницами с помощью класса NavigationPage. Цикл статей по Xamarin ...

Читать

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

Июль 3, 2022 г.

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

Читать

 

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

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



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