【问题标题】:UWP Get Rotation Value (Angle) from Storyboard Animation During or AfterUWP 在期间或之后从情节提要动画中获取旋转值(角度)
【发布时间】:2017-05-03 01:32:47
【问题描述】:

我正在手动制作一个轮播面板。我有一个简单的故事板,它可以旋转一个看起来像轮子的网格。

    <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 设置为一个 Grid,就像文章中的示例对 Button 所做的那样。

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

【问题讨论】:

    标签: c# xaml animation storyboard uwp


    【解决方案1】:

    有人知道如何获取这个值吗?

    您可以像这样从 Wheel 元素的 CompositeTransform 中获取 Rotation 属性的当前值:

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

    【讨论】:

    • 这行得通。谢谢!所以这只是将动画的覆盖属性,一个 RenderTransform,我无法将其值转换为我可以的 CompositeTransform 属性?
    • 您的动画为 Rotation 属性设置动画,即它设置该属性的值,即您设置为 Wheel 元素的 RenderTransform 属性值的 CompositeTransform 的值。所以你可以从这个属性中获取当前值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2014-06-01
    • 2010-12-20
    • 2010-10-27
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多