7
我已經實現以下方式網格控制的移動的動畫:改進動畫平滑度(控件移動)
<Grid
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger
Binding="{Binding ElementName=rootLayout, Path=IsVisible}"
Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation
Storyboard.TargetProperty="Margin"
From="-500,0,0,0"
To="0,0,0,0"
Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Border
Grid.RowSpan="2"
Background="Black"
CornerRadius="6" >
<Border.Effect>
<DropShadowEffect />
</Border.Effect>
</Border>
<TextBlock
Grid.Row="0"
Width="400"
Height="200"
Margin="20,20,20,10"
Text="{Binding Path=MessageText}" />
<Button
Grid.Row="1"
Margin="20,5,20,15"
HorizontalAlignment="Right"
Width="75"
Content="OK"
Command="{Binding Path=CloseDialogCommand}" />
</Grid>
的動畫作品很好,但它的醜陋。它搖搖晃晃/緊張/生澀,而且看起來確實不專業。有沒有辦法改善這一點?我是否正確地使用Margin
屬性的值更改動畫來移動網格?我已閱讀RenderTransform
,但我不知道如何在我的情況下使用它。
此外,動畫看起來不自然。我知道這可以改善,但我不知道如何。這些是什麼性質,他們可以幫助我提高我的動畫:
AccelerationRatio
DecelerationRatio
EasingFunction
IsAdditive
IsCumulative
SpeedRatio
感謝您的幫助!
P.S.我試圖在XAML中放置儘可能多的代碼,所以我更喜歡這種方法,但實際上,如果有什麼需要改進的話...
謝謝你,這改善了我的動畫。但有一點需要注意,動畫在抖動方面的表現是相同的,但我認爲這是由於相當短的時間 - 因此,使用渲染變換或厚度動畫似乎產生了相同的結果。你提供的鏈接非常有用,特別感謝你。 – Boris 2011-04-15 08:54:34
我找到了一個頁面,介紹瞭如何影響WPF應用程序的幀速率。該頁面文章實際上解釋瞭如何降低幀速率,但在我的情況下,我需要相反的。所以,我將幀率從默認的60增加到了120,現在應用程序動畫就像一個魅力。這裏是鏈接到文章http://marlongrech.wordpress.com/2008/06/13/wpf-reducing-cpu-consumption-for-animations/ – Boris 2011-04-15 12:22:08
問題是有多少用戶會從中受益,如果顯示器確實不支持足夠高的刷新率,它看起來會比60fps更糟糕。 (我估計絕大多數便攜式計算機的刷新頻率爲60Hz,默認情況下可能最適合,即使對於臺式電腦,我懷疑你通常沒有發現頻率高於96Hz的原始頻率) – 2011-04-15 12:40:44