c# - 将连续动画应用到 WPF 中的 Canvas

标签 c# wpf animation canvas

我想将连续的 FadeIn/FadeOut 动画应用到 WPF 中的特定 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);

最佳答案

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

关于c# - 将连续动画应用到 WPF 中的 Canvas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23585548/

相关文章:

WPF:为什么 SharedSizeScope 没有按预期工作?

c# - 更改启动画面的持续时间?

javascript - 如何为 css 更改添加动画时间

android - 如何动画隐藏 View 的过程?

c# - IIS 中的请求会在单个线程上运行吗?

c# - 获取具有属性的静态方法并将它们订阅到一个事件

c# - 无法加载文件或程序集 Microsoft.ReportViewer.ProcessingObjectModel,版本 = 13.0.0.0

jquery - 使用 jQuery 实现定时动画

c# - 优化 Lucene 批量索引

c# - 检测变量c#中的第一个字符