Как отображать анимацию?

#c# #wpf #winforms #animation

#c# #wpf #winforms #Анимация

Вопрос:

Хорошо, у меня есть проект, соберите навигатор из OEM RX-8 sat nav капота! Хотя мне нравится интерфейс, на котором остановился этот парень, я собираюсь написать свой собственный.

Итак, у меня есть два вопроса:

Какой «предпочтительный» (осмелюсь сказать, лучший) тип анимационного носителя? IE: Gif, SVG, MPEG, Avi и т.д.

После того, как вы остановились на # 1, вы бы сделали это в WinForms или WPF? Должно быть одним из этих двух из-за других сторонних ссылок, которые будут иметь проект.

По умолчанию я всегда использую goto GIF и WinForms, когда нужны пользовательские заставки. Я годами не делал проект для настольных компьютеров, поэтому хочу посмотреть, есть ли более новый или лучший вариант.

Идея, которая у меня есть, будет состоять из двух анимаций. «Загрузка» продолжительностью от 3 до 5 секунд и «фон», который всегда можно увидеть при навигации по экранам меню.

Спасибо!

Ответ №1:

Это слишком широкий вопрос, чтобы на него можно было ответить, однако в первые дни моей работы я попадал в подобные ситуации, когда для начала мне требовалось принятие подобных решений, поскольку у меня не было достаточных знаний. Итак, вот оно…

  1. Должен ли я использовать GIF / AVI / MPEG и т.д. …?

Во-первых, вам нужно хорошо понимать, что Animations собой представляет на самом деле. Когда дело доходит до видео, анимация — это просто нечто, что моделируется само по себе и является частью видео. Когда дело доходит до программного обеспечения или приложений, это означает, что некоторым объектам необходимо изменить некоторые из их свойств на основе некоторой математики.

Как только вы это проясните, у вас будет лучшее понимание того, что делать. Теперь использование GIF / MPEG или другого видеофайла в приложении может создать только иллюзию наличия анимации, а не реальной. Допустим, вам нужен счетчик загрузки в вашем приложении. Вы можете либо создать GIF-изображение вращающегося спиннера с помощью After Effects и встроить его с Image элементом управления где-нибудь в вашем приложении.

Или

На самом деле вы можете draw создать счетчик / часть круга и написать коды, чтобы заставить его вращаться по кругу, создавая таким образом реальную анимацию.

В любом случае, возвращаясь к самому вопросу, ответ таков: ЭТО ЗАВИСИТ!. Если мы говорим об анимации, то сначала нам нужно понять наши потребности. Кроме того, нам нужно понимать, что такое видео и что такое изображение. Gif — это просто набор изображений, он же сам файл изображения, где в формате MPEG / AVI и т.д. Представлены видеофайлы. Итак, конечно, GIF это правильный путь.

  1. WinForms vs WPF

Что ж, это вопрос, который я задавал себе много лет назад, когда был заинтригован анимацией и всем прочим. Смотрите, в обоих случаях вы можете создать желаемые функции, если знаете, какую логику реализовать. Однако, короче говоря, единственное, что вы должны знать: «WPF — лучший выбор по сравнению с WinForms, когда вы создаете интерактивное приложение со сложным графическим интерфейсом«.

Допустим, вы хотите анимировать menu скольжение внутрь и наружу. В WinForms вы должны использовать Timer и устанавливать положение меню в Tick событии, таким образом изменяя значение свойства каждую миллисекунду. На этом работа выполнена, но когда вы на самом деле ее реализуете, вы увидите такие проблемы, как мерцание, обрезанные участки экрана и т.д.

Все это решается в WPF, который уделяет большое внимание анимации. В WPF мы называем их StoryBoard s. Там все эти изменения значений свойств обрабатываются под капотом, и вам вряд ли нужно что-либо кодировать.

Но это не должно быть единственным фактором при выборе между WinForm и WPF . Вам также необходимо учитывать свой набор навыков. Например, в WinForms вы просто перетаскиваете и создаете свой дизайн. Конечно, вы можете создавать сложные Custom Control файлы с пользовательским внешним видом. Это требует отличных знаний C #, а также некоторых принципов проектирования. В WPF вам нужны знания не только о написании логики на C #, но и о создании дизайнов на XAML. Вам также необходимо отличное понимание некоторой математики для упрощения функций и всего остального (хотя это и не обязательно).

Если вы считаете, что можете приложить усилия и у вас должно быть отличное приложение с графическим интерфейсом, используйте WPF с очень небольшим количеством GIF-файлов (всего один или два во всем приложении) и создавайте большинство анимаций с помощью StoryBoard s. Если вам просто нужно приложение с графическим интерфейсом, возможно, с красивым внешним видом, но без анимации, используйте WinForms. Однако усилия, необходимые для кодирования анимации на чистом C #, в WinForms, больше, чем усилия, затраченные на выполнение этого в чистом XAML или After Effects.

Надеюсь, этот ответ поможет вам в принятии правильного решения. Приветствия!

Редактировать 0.1

Причина, по которой предлагается использовать максимум один или два GIF-файла, заключается в том, что я лично считаю, что WPF потребляет больше памяти при воспроизведении таких файлов через Image элемент управления и также может иметь утечки памяти. Так что будьте очень осторожны с этим.

Редактировать 0.2

Что ж, поскольку я упоминал, что сложные приложения с графическим интерфейсом могут быть созданы с помощью WinForms, позвольте мне объяснить способ, как это можно сделать.

Допустим, вам нужно текстовое поле с синими рамками и падающей тенью, вы не можете создать его исключительно в WinForms. Но это все еще можно сделать. Если вы знаете Photoshop, вы можете просто нарисовать фигуру rectangle с помощью drop-shadow, экспортировать ее, перетащить Panel в свой Window , установить для нее значение Background или BackgroundImage в прямоугольник, который вы только что экспортировали, перетащить текстовое поле внутрь панели, установить для него BorderStyle значение flat, написать несколько кодов для удаления границы / border color, когда текстовое поле находится в фокусе.

Наконец, у вас есть потрясающее текстовое поле с выпадающей тенью и всем прочим. Это всего лишь один пример. Вы можете создавать другие сложные проекты в WinForms с помощью этих сторонних инструментов, но да, ЭТО НЕ ЧИСТЫЕ WINFORMS!. Но еще раз, анимация и WinForms никогда не являются отличной комбинацией.

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

1. Скажем так …. решение легче принять. Спасибо Aousaf. Цель анимации — «радовать глаз» при нулевом взаимодействии с самим приложением. И у меня есть приятель, который знает After Effects вдоль и поперек! Спасибо за ваше время, ответ, который мне был нужен! 🙂 Значит, в Winforms это все-таки будет C #!

2. @LeadMagnet, приветствую! Рад, что это помогло. Тем не менее, я вношу некоторые правки. Вы также можете это проверить.

3. В свое время, да, я знал о подводных камнях анимации элементов управления внутри WinForms. К счастью для меня, в этом проекте это просто «фон». Никакой анимации чего-либо другого не будет, поскольку это вызвало бы серьезное (потенциально опасное) отвлечение внимания во время его использования. Кроме того, на мой взгляд, анимация в целом отнимает много времени у пользователей. Спасибо за обновления! Всем хорошего настроения!