WPF Вопрос новичка - PullRequest
       8

WPF Вопрос новичка

0 голосов
/ 26 января 2009

Я пытаюсь изучить WPF-анимацию, и в настоящее время меня смущает довольно много вещей:

Я использовал такие инструменты, как обработка, где у вас есть простой метод, который вызывается n раз в минуту, где n - частота кадров.

Способ создания анимации в WPF состоит в изменении свойства. Если я использую, например, DoubleAnimation, то при продолжении анимации увеличивается двойное число. Но это не совсем то, что я хочу. Я хочу, чтобы в каждом цикле некоторые свойства увеличивались, некоторые изменялись случайным образом, а некоторые - взаимодействием с пользователем. Как я могу сделать это в WPF?

Что меня смущает, так это тот факт, что WPF поддерживает несколько анимаций одновременно. Как это работает? Есть ли поток для каждой анимации или только один для всех анимаций.

Я использовал gdi с c # некоторое время назад. Я даже мог использовать несколько потоков для рисования; Насколько я помню, мне просто нужно было вставить все команды рисования в какую-то очередь, а затем окна позаботились о них ... Я понятия не имею, как это делается с WPF.

Ответы [ 2 ]

3 голосов
/ 26 января 2009

На базовом уровне анимации WPF точно такие же, как и у любого другого вида анимации: внутренне отсчитывается время и изменяются некоторые свойства, которые приводят к другому изображению при выводе на экран.

WPF выполняет всю работу для того, чтобы вы могли задавать анимации относительно времени на настенных часах, например, «перемещать этот блок со скоростью 3 мм в секунду влево». Для более сложных сценариев, которые вы можете захотеть написать в своей анимации, см. Статью Обзор пользовательских анимаций в MSDN.

Что касается потоков, WPF работает так же, как и GDI: существует один Thread, который обрабатывает все взаимодействия с моделью WPF, и вы можете общаться с элементами управления WPF, только если вы работаете в этом потоке. Вы можете использовать Dispatcher , чтобы "отправить" код этой теме, если вы свободны. Фактическое рисование в DirectX выполняется в отдельном потоке, но это не касается случайных пользователей API.

0 голосов
/ 26 января 2009

Вы можете запустить несколько анимаций одновременно, поместив их в StoryBoard.

Вы можете использовать анимацию BeginTime для запуска одной анимации за другой.

Вы можете использовать версию ключевых кадров (DoubleAnimationUsingKeyFrames) или версию пути (DoubleAnimationUsingPath) для создания сложных нелинейных анимаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...