2

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

4

1 回答 1

3

你正在尽可能快地旋转。我猜你有两个核心,所以在 50% 时,一个完全忙于旋转。也许你可以添加一个Duration到你的DoubleAnimation,所以它需要几秒钟旋转一次 360,减少 CPU 负载。

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

于 2013-05-28T17:19:59.677 回答