【问题标题】:Animating a Slider with DoubleAnimationUsingKeyFrames in WPF在 WPF 中使用 DoubleAnimationUsingKeyFrames 为滑块设置动画
【发布时间】:2014-03-09 05:12:16
【问题描述】:

我尝试做的事情应该相当简单,但无论出于何种原因,它都行不通。 预期的行为应该是滑块拇指从0 => 100 (silder min=0 max=100) 移动,这意味着从左到右,然后再返回,再到右边并在那里等待 5 秒,就像 KITT (骑士骑士)。

到目前为止,我唯一实现的就是它开始向右移动,就这样,停在那里,不做任何事情,没有进一步的动画:

storyboard = new Storyboard();
storyboard.Completed += Storyboard_OnCompleted;

var doubleKeyFrame = new DoubleAnimationUsingKeyFrames();
doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(0, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 0))));                       
doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(100, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 5))));
doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(0, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 5))));
doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(100, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 3))));
doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(100, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 5))));

Storyboard.SetTarget(doubleKeyFrame, slider);
Storyboard.SetTargetProperty(doubleKeyFrame, new PropertyPath("Value"));
storyboard.Children.Add(doubleKeyFrame);

storyboard.Begin(slider);

我从几个小时开始就在玩这个,我不知道。请也许有人可以帮我一下。

国王的问候,伯恩哈德。

【问题讨论】:

    标签: wpf animation storyboard


    【解决方案1】:

    试试这个,我添加了RepeatBehavior.ForeverdoubleKeyFrame 的持续时间:

    var storyboard = new Storyboard();
    
    var doubleKeyFrame = new DoubleAnimationUsingKeyFrames();
    doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(100, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 0))));
    doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(0, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 5))));
    
    doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(0, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 0))));
    doubleKeyFrame.KeyFrames.Add(new LinearDoubleKeyFrame(100, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0, 3))));
    
    doubleKeyFrame.RepeatBehavior = RepeatBehavior.Forever;
    doubleKeyFrame.Duration = TimeSpan.FromSeconds(10);
    
    Storyboard.SetTarget(doubleKeyFrame, slider);
    Storyboard.SetTargetProperty(doubleKeyFrame, new PropertyPath("Value"));
    storyboard.Children.Add(doubleKeyFrame);
    
    storyboard.Begin(slider);
    

    【讨论】:

    • 首先非常感谢,我第一次看到它左右移动,但我仍然不明白您的解决方案如何以及为什么有效。我也会以不同的方式完成关键帧。如果我想在每一边暂停一下/几秒,我会怎么做,也许你可以给我一些想法。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多