UWP在故事板动画期间或之后获取旋转值(角度)

时间:2016-12-17 11:39:43

标签: c# xaml animation storyboard uwp

我手动制作旋转木马面板。我有一个简单的故事板,旋转一个看起来像一个轮子的网格。

    <Storyboard x:Name="MyStoryboard">
        <DoubleAnimation Duration="0, 0, 30" To="3000" FillBehavior="HoldEnd"  x:Name="myAnimation" 
         Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" 
         Storyboard.TargetName="Wheel" d:IsOptimized="True"/>
    </Storyboard>

车轮分为10度段,因此当手动停止动画时,它必须仅在10度的倍数上休息。我读了这篇文章: MSDN: How to Set a Property After Animating it with a Storyboard 前两个解决方案似乎不适用于UWP(Storyboard.Remove方法甚至不存在),我认为第三个解决方案不适用于旋转面板,因为我无法将Storyboard设置为依赖属性一个网格,就像文章中的例子用Button做的那样。

如果我可以在故事板停止时以某种方式获得旋转值,我可以将其舍入到下一个10的倍数并使用它设置DoubleAnimation.To值。有谁知道如何获取这个值(或者更好的方法来完成所有这些)?

1 个答案:

答案 0 :(得分:1)

  

有谁知道如何获取此值?

您可以从Wheel元素的CompositeTransform获取Rotation属性的当前值,如下所示:

private void PauseAnimation_Click(object sender, RoutedEventArgs e)
{
    MyStoryboard.Pause();
    CompositeTransform d = Wheel.RenderTransform as CompositeTransform;
    double rotation = d.Rotation;
 }