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

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

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

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

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

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

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

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

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

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

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

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

Июль 4, 2022 г.

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

Читать

Сохранение данных приложения в C# Xamarin (Android)

Июль 17, 2022 г.

В самом простом случае нужно обеспечить функциональность на уровне хеш массива, т.е. работу с парами ключ + значение. В Xamarin данный функционал инкапсулирован в статический класс Preferences. В рамках вашего Android приложения вы можете выполнять ...

Читать

 

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

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



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