2013-05-28 82 views
2

我有這個畫布在我的XAML定義的RenderTransform需要太多的CPU

<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> 

這個動畫把我的CPU的50%,我怎麼能提高性能?

+1

如果你正在做的是旋轉圖像,也許動畫GIF會更好(預先計算的圖像總是拍計算圖像)。 [這](http://stackoverflow.com/questions/210922/how-do-i-get-an-animated-gif-to-work-in-wpf)問題和答案可能會有所幫助。 –

回答

3

你正在儘可能快地旋轉。我想你有兩個內核,所以在50%的時候完全忙於旋轉。也許你可以在你的DoubleAnimation上添加一個Duration,這樣360秒就可以旋轉幾秒鐘,從而減少CPU負載。另一方面,如果通過性能表示你希望旋轉得更快,利用另外50%的CPU,那麼你應該考慮硬件支持和可能的圖形框架。 WPF很好,但不適合高性能圖形。

+0

我試着在我的動畫中添加持續時間,但沒有任何改變。另外我注意到,如果將動畫放在UserControl中,出現此問題,如果將動畫放入窗口中,CPU表現爲「正常」(應用程序使用3,4%) –