Плавная анимация в C #

Создание плавной анимации с использованием C # в различных компьютерных системах может быть сложной задачей. Однако есть простой метод адаптации поведения программы к целевому количеству кадров в секунду.

Анимация объектов с помощью C # может означать разные вещи.

Первое, что вам нужно сделать, это анимировать последовательность изображений, например, анимированный GIF. В этом случае некоторая поддержка в .Net Framework уже есть, но вы можете захотеть охватить рисование кадр за кадром.

Другая форма анимации — это изображения, генерируемые кодом. GDI% 2B может рисовать очень сложную графику, а их плавная анимация может добавить дополнительное измерение качества вашим .Net-приложениям.

Наконец, иногда программисты хотят анимировать поведение оконных форм, например размер, положение, текст и т. Д. Хотя это свойства объекта, мы хотим, чтобы они периодически менялись независимо от скорости процессора компьютера.

Первый шаг в написании анимации постоянной FPS на C # — это решить, как измерять циклы ЦП. Наиболее распространенными объектами, используемыми для измерения времени, являются объект Timer и класс DateTime. Оба варианта просты в использовании, но им не хватает точности. Вместо этого мы будем использовать класс System.Diagonistics.StopWatch.

Класс StopWatch использует вызов API QueryPerformanceTimer для более точного отслеживания циклов ЦП. Более высокая точность в этом случае означает более постоянную анимацию.

По сути, вы хотите следить за тремя значениями, два из которых постоянно меняются:

  • Интервал = секундомер. Частота / [target FPS (30.0 for example)]
  • currentTicks = секундомер.GetTimestamp ()
  • lastTicks = как currentTicks, но добавлено время последней отрисовки анимации

Логика алгоритма C # не слишком сложна. Короче говоря, цикл будет выполняться все время, но вы хотите, чтобы анимация запускалась / обновлялась только тогда, когда последнее количество циклов ЦП и текущее количество циклов составляют хотя бы один промежуток от ранее рассчитанного интервала. Тогда и только тогда анимация обновится.

Результатом является постоянная анимация, независимо от того, насколько быстр компьютер. Просто настройте FPS в своей системе, и это будет воспринимаемая скорость во всех системах.

Причина, по которой это работает, заключается в том, что анимация не выполняется бездумно в простом цикле while / for. Цикл использует циклы ЦП главного компьютера для настройки интервала обновления анимации.

#Плавная #анимация

Автор записи: admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *