2016-12-17 39 views
1

我手動製作旋轉木馬面板。我有一個簡單的故事板,旋轉一個看起來像輪子的網格。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設置爲Grid的依賴項屬性,就像文章中的示例使用Button一樣。

如果我可以在故事板停止時以某種方式獲得旋轉值,那麼我可以將它舍入到10的下一個倍數並使用它設置DoubleAnimation.To值。有誰知道如何獲取這個值(或者更好的方法來完成所有這些)?

回答

1

有誰知道如何抓住這個值?

你可以旋轉屬性從輪構件的這樣的CompositeTransform當前值:

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

這工作。謝謝!因此,這只是將動畫的重寫屬性,一個RenderTransform,我無法獲得值的CompositeTransform屬性,我可以? –

+0

您的動畫將您設置爲Wheel元素的RenderTransform屬性的值的CompositeTransform的Rotation屬性設置爲動畫,即設置此屬性的值。所以你可以從這個屬性獲取當前值。 – mm8