在WPF中为画布应用连续动画

本文关键字:应用 连续 动画 布应用 WPF | 更新日期: 2023-09-27 18:02:47

我想在我的WPF中应用连续的FadeIn/FadeOut动画到特定的Canvas

我能够做 FadeOut 部分,但随后 FadeIn 部分立即执行,破坏动画。

我还希望所有这些都在一个平滑的循环中,而不干扰我的正常操作。

把它看作一个动画背景

最好的方法是什么?我应该使用While吗?或者我应该使用Timer ?…

var duration = new Duration(TimeSpan.FromMilliseconds(1000));
var fadeOut = new DoubleAnimation(0.0, duration);
var fadeIn = new DoubleAnimation(1.0, duration);
MyCanvas.BeginAnimation(OpacityProperty, fadeOut);
MyCanvas.BeginAnimation(OpacityProperty, fadeIn);

在WPF中为画布应用连续动画

您可以设置单个DoubleAnimation的AutoReverseRepeatBehavior属性以获得连续效果:

var fadeInOutAnimation = new DoubleAnimation
{
    From = 0,
    To = 1,
    Duration = TimeSpan.FromSeconds(1),
    AutoReverse = true,
    RepeatBehavior = RepeatBehavior.Forever,
};
MyCanvas.BeginAnimation(OpacityProperty, fadeInOutAnimation);

在你的方法中,你必须将第二个动画的BeginTime属性设置为第一个动画的Duration