using System.Windows.Media.Animation;
<Grid>
<StackPanel>
<Button x:Name="btn" Content="执行动画" Width="100" Height="40" Click="Button_Click"/>
</StackPanel>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
//创建一个双精度的动画
DoubleAnimation animation = new DoubleAnimation();
animation.By = -30;//设置范围,在原来的基础上减30
//animation.From = btn.Width;//动画开始值
//animation.To = btn.Width - 30;//动画结束值
animation.Duration = TimeSpan.FromSeconds(3);//动画的持续时间
animation.AutoReverse = true;//执行完动画之后,恢复到原始状态
//animation.RepeatBehavior = RepeatBehavior.Forever;//动画一直持续执行
//animation.RepeatBehavior = new RepeatBehavior(3);//动画执行3次
animation.Completed += Animation_Completed;
//在当前按钮上执行该动画
btn.BeginAnimation(Button.WidthProperty, animation);
}
private void Animation_Completed(object? sender, EventArgs e)
{
btn.Content = "动画已完成";
}