RenderTransform占用太多CPU

时间:2013-05-28 17:10:21

标签: c# wpf

我的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="Images\CircularLoading.png" Width="128" Height="128" />
</Canvas>

这个动画占用了我50%的CPU,我怎样才能提高性能?

1 个答案:

答案 0 :(得分:3)

你正在以尽可能快的速度旋转。我猜你有两个核心,所以50%一个完全忙着旋转。也许你可以在你的Duration中添加DoubleAnimation,这样就需要花费几秒钟的时间旋转360度,从而减少CPU负载。

另一方面,如果按性能表示你想要更快地旋转,利用另外50%的CPU,你应该考虑硬件支持和可能的图形框架。 WPF很不错,但不适用于高性能图形。