Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Следует уяснить, что классы
Animation
По соглашению свойство зависимости определяется как статическое, доступное только для чтения поле класса, имя которого образуется добавлением слова
Property
Height
Button
Button.HeightProperty
Свойства То, From и By
Во всех классах
Animation
•
То
•
From
•
By
Несмотря на тот факт, что все классы поддерживают свойства
То
From
By
Thickness
В связи со сказанным может возникнуть вопрос: почему не использовались обобщения .NET для определения единственного обобщенного класса анимации с одиночным параметром типа (скажем,
Animate<T>
Роль базового класса Timeline
Хотя для определения виртуальных свойств
То
From
By
Animation
System.Windows.Media.Animation.Timeline

Реализация анимации в коде C#
Вы построите окно, содержащее элемент
Button
SpinningButtonAnimationApp
MouseEnter
<Button x:Name="btnSpinner" Height="50" Width="100" Content="I Spin!"
MouseEnter="btnSpinner_MouseEnter" Click="btnSpinner_OnClick"/>
В файле отделенного кода импортируйте пространство имен
System.Windows.Media.Animation
private bool _isSpinning=false;
private void btnSpinner_MouseEnter(
object sender, MouseEventArgs e)
{
if (!_isSpinning)
{
_isSpinning=true;
<b> // Создать объект DoubleAnimation и зарегистрировать</b>
<b> // его с событием Completed.</b>
var dblAnim=new DoubleAnimation();
dblAnim.Completed +=(o, s)=> { _isSpinning=false; };
<b> // Установить начальное и конечное значения.</b>
dblAnim.From=0;
dblAnim.To=360;
<b> // Создать объект RotateTransform и присвоить</b>
<b> // его свойству RenderTransform кнопки.</b>
var rt=new RotateTransform();
btnSpinner.RenderTransform=rt;
<b> // Выполнить анимацию объекта RotateTransform.</b>
rt.BeginAnimation(RotateTransform.AngleProperty, dblAnim);
}
}
private void btnSpinner_OnClick(
object sender, RoutedEventArgs e)
{
}
Первая крупная задача метода
btnSpinner_MouseEnter()
DoubleAnimation
0
360
Completed
Затем создается объект
RotateTransform
RenderTransform
Button
btnSpinner
RenderTransform
Angle
DoubleAnimation
BeginAnimation()