在我的xaml定义中有这个Canvas
<Canvas Width="128" Height="128" Margin="10">
<Canvas.CacheMode>
<BitmapCache />
</Canvas.CacheMode>
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
From="0" To="360"
RepeatBehavior="Forever"
Storyboard.TargetName="spin"
Storyboard.TargetProperty="(RotateTransform.Angle)"
/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
<Canvas.RenderTransform>
<RotateTransform x:Name="spin" Angle="0" CenterX="64" CenterY="64" />
</Canvas.RenderTransform>
<Image Source="ImagesCircularLoading.png" Width="128" Height="128" />
</Canvas>
这个动画占用了我50%的CPU,我该如何提高性能?
你已经在以最快的速度旋转了。我猜你有两个核,所以在50%的时候,一个完全在忙着旋转。也许你可以在你的DoubleAnimation
上添加一个Duration
,这样它就可以在几秒钟内旋转360度,从而减少CPU负载。
另一方面,如果你说的性能意味着你想更快地旋转,也利用另外50%的CPU,你应该考虑硬件支持和可能的图形框架。WPF很好,但不适合高性能图形。