RenderTransform占用太多CPU

本文关键字:CPU 太多 RenderTransform | 更新日期: 2023-09-27 18:15:39

在我的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,我该如何提高性能?

RenderTransform占用太多CPU

你已经在以最快的速度旋转了。我猜你有两个核,所以在50%的时候,一个完全在忙着旋转。也许你可以在你的DoubleAnimation上添加一个Duration,这样它就可以在几秒钟内旋转360度,从而减少CPU负载。

另一方面,如果你说的性能意味着你想更快地旋转,也利用另外50%的CPU,你应该考虑硬件支持和可能的图形框架。WPF很好,但不适合高性能图形。