Программирование >>  Расширенный wf 

1 ... 8 9 10 [ 11 ] 12 13 14 15


<Path Name= mouth Stroke= Blue StrokeThickness= 4 Data= M 62,125 Q 95,122 102,108 />

<Line Name= LeftLeg X1= 92 X2= 82 Y1= 146 Y2= 168 Stroke= Blue

StrokeThickness= 4 /> <Line Name= LeftFoot X1= 68 X2= 83 Y1= 160 Y2= 169 Stroke= Blue

StrokeThickness= 4 /> <Line Name= RightLeg X1= 124 X2= 132 Y1= 144 Y2= 166 Stroke= Blue

StrokeThickness= 4 /> <Line Name= RightFoot X1= 114 X2= 133 Y1= 169 Y2= 166 Stroke= Blue

StrokeThickness= 4 />

</Canvas> </Grid>

<StackPanel DockPanel.Dock= Bottom Orientation= Horizontal > <Button Width= 80 Height= 40 Margin= 20,5,5,5

Name= startAnimationButton >Start</Button> <Button Width= 80 Height= 40 Margin= 5,5,5,5

Name= stopAnimationButton >Stop</Button>

<Button Width= 80 Height= 40 Margin= 5,5,5,5

Name= startButtonXAML >Start</Button> <Button Width= 80 Height= 40 Margin= 5,5,5,5

Name= stopButtonXAML >Stop </Button> </StackPanel> <DockPanel.Triggers>

<EventTrigger RoutedEvent= Button.Click SourceName= startButtonXAML > <BeginStoryboard Name= beginMoveEye > <Storyboard Name= moveEye >

<DoubleAnimation RepeatBehavior= Forever DecelerationRatio= .8

AutoReverse= True By= 8 Duration= 0:0:1 Storyboard.TargetName= eye

Storyboard.TargetProperty= (Canvas.Left) /> <DoubleAnimation RepeatBehavior= Forever AutoReverse= True By= 8 Duration= 0:0:5 Storyboard.TargetName= eye Storyboard.TargetProperty= (Canvas.Top) /> </Storyboard> </BeginStoryboard>

</EventTrigger>

<EventTrigger RoutedEvent= Button.Click SourceName= stopButtonXAML >

<StopStoryboard BeginStoryboardName= beginMoveEye /> </EventTrigger> </DockPanel.Triggers> </DockPanel> </Window>

Вместо запуска и остановки анимации непосредственно из триггеров событий в XAML вы можете легко управлять анимацией из отделенного кода. Кнопки startAnimationButton и stopAnimationButton имеют ассоциированные с ними обработчики событий OnStartAnimation и OnStopAnimation. Внутри обработчиков событий анимация запускается методом Begin() и останавливается методом Stop(). Для метода Begin() второй параметр устанавливается в true, чтобы позволить управлять анимацией с помощью запроса на останов.

public partial class Window1 : System.Windows.Window

public Window1()

InitializeComponent();

startAnimationButton.Click += OnStartAnimation; stopAnimationButton.Click += OnStopAnimation;



void OnStartAnimation(object sender, RoutedEventArgs e)

moveEye.Begin(eye, true);

void OnStopAnimation(object sender, RoutedEventArgs e)

moveEye.Stop(eye);

Теперь вы можете запустить приложение и наблюдать движение глаз рожицы, как только щелкнете на кнопке Start (Пуск).

Storyboard

Класс Storyboard унаследован от базового класса Timeline, но может содержать в себе множество временных шкал. Класс Storyboard может быть использован для управления временными шкалами. В табл. 35.6 описаны методы класса Storyboard.

Таблица 35.6. Методы класса Storyboard Метод Описание

Begin() Метол Begin() запускает анимацию, ассоциированную с раскадровкой.

BeginAnimation() Методом BeginAnimation() можно запустить одну анимацию для свойства зависимости.

CreateClock() Метод CreateClock() возвращает объект, который можно использовать

для управления анимацией.

Pause() Методами Pause() и Resume() можно приостанавливать и возобновлять

Resume() анимацию.

Seek() С помощью метода Seek() можно совершить прыжок во времени и пере-

местить точку выполнения анимации на определенный временной интервал.

Stop()

Методом Stop() останавливает отсчет времени и анимацию.

Класс EventTrigger позволяет определить действия, которые нужно выполнить при возникновении события. В табл. 35.7 перечислены свойства этого класса.

Таблица 35.7. Свойства класса EventTrigger Свойство Описание

RoutedEvent Через свойство RoutedEvent вы можете определить событие, в ответ на

которое должен стартовать триггер, например, событие Click для кнопки.

SourceName Свойство SourceName задает элемент WPF, к которому должно подклю-

чаться событие.

Классы TriggerAction, которые можно поместить внутрь EventTrigger, перечислены в табл. 35.8. В примере, который вы видели ранее, описаны действия BeginStoryboard и StopStoryboard, но в этой таблице присутствует и ряд других.



Таблица 35.8. Классы TriggerAction

Класс

Описание

SoundPlayerAction BeginStoryboard PauseStoryboard ResumeStoryboard StopStoryboard SeekStoryboard

SkipStoryboardToFill

SetStoryboardSpeedRatio

С помощью SoundPlayerAction можно воспроизвести файл .wav.

BeginStoryboard запускает анимацию, определенную Storyboard.

PauseStoryboard приостанавливает анимацию.

ResumeStoryboard возобновляет приостановленную анимацию.

StopStoryboard останавливает запущенную анимацию.

Посредством SeekStoryboard можно изменить текущий момент воспроизведения анимации.

SkipStoryboardToFill перемещает точку исполнения анимации таким образом, чтобы захватить заданный период в конце.

С помощью SetStoryboardSpeedRatio можно изменить скорость воспроизведения анимации.

Добавление средств 3-D к WPF

В этом разделе мы представим введение в средства 3-D WPF. Здесь вы найдете необходимую информацию, чтобы начать работать с этими средствами.

Пространство имен для 3-D - это System.Windows.Media.Media3D.

Чтобы понять 3-D в WPF, важно значит отличие координатной системы. На рис. 35.22 показана координатная система WPF 3-D. Начальная точка находится в центре. Положительные значения по оси x откладываются вправо, а отрицательные - влево. Ось y - вертикальная, с положительными значениями вверху и отрицательными внизу. Ось z определяет положительные значения в направлении наблюдателя.

Наиболее важные классы и их функциональность описаны в табл. 35.9.

Рис. 35.22. Система координат WPF 3-D



1 ... 8 9 10 [ 11 ] 12 13 14 15

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика