【问题标题】:Apply a continuous animation to a Canvas in WPF在 WPF 中将连续动画应用于画布
【发布时间】:2014-05-10 19:45:19
【问题描述】:

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

我可以执行 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);

【问题讨论】:

    标签: c# wpf animation canvas


    【解决方案1】:

    您可以设置单个 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

    【讨论】:

    • 非常感谢 Clemens,这正是我所需要的。
    • 可以暂停 1 秒后再重复吗?
    • 我猜不是,但您可以使用像 EasingFunction = new CubicEase { EasingMode = EasingMode.EaseIn } 这样的缓动函数,并且可能持续 2 秒。
    • 谢谢,我试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2016-12-24
    • 2018-06-15
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多