2010-06-03 55 views
9

WPF 的Windows-XP SP3。</p> <p>我有一個簡單的WPF動畫問題WPF波濤洶涌的動畫

我用下面的XAML代碼(在XamlPad並在WPF項目):

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > 
    <Border Name="MyBorder" BorderThickness="10" BorderBrush="Blue" CornerRadius="10" Background="DarkRed" > 
     <Rectangle Name="MyRectangle" Margin="10" StrokeDashArray="2.0,1.0" StrokeThickness="10" RadiusX="10" RadiusY="10" Stroke="Black" StrokeDashOffset="0"> 
      <Rectangle.Triggers> 
       <EventTrigger RoutedEvent="Rectangle.Loaded"> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="StrokeDashOffset" From="0.0" To="3.0" Duration="0:0:1" RepeatBehavior="Forever" Timeline.DesiredFrameRate="30" /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Rectangle.Triggers> 
     </Rectangle> 
    </Border> 
</Page> 

它具有使邊框動畫周圍的矩形的效果。重新啓動機器後,此動畫非常流暢。但是,我傾向於始終離開我的機器,經過一段時間(我不知道有多久),動畫開始出現口吃並變得波濤洶涌。

我認爲這可能是內存或資源問題,但關閉所有其他應用程序和任何似乎不必要的服務後,口吃仍會繼續。但是,系統重新啓動後,動畫再次平滑!

我在WPF應用程序或XamlPad中得到相同的症狀。在應用程序的情況下,無論我是在調試器中運行還是直接運行可執行文件,似乎都沒有什麼區別。

我在這個鏈接應用了補丁:http://support.microsoft.com/kb/981741我認爲它已經處理了這個問題,但它似乎沒有。

我已經看到一些帖子,可能表明使用透明度可能會影響動畫,但正如你所看到的,我的xaml不使用透明度。

任何人都可以給我一些關於如何確定問題的建議嗎?有沒有任何WPF診斷工具可能有幫助?

更新:我檢查了我的視頻驅動程序,它們是最新版本。 (nVidia GeForce 8400 GS)

+1

你需要一個系統重新啓動(即重新啓動編沒有幫助)?這看起來像一個驅動程序(DirectX)問題。 – 2010-06-03 21:09:00

+4

@Chris Dunaway:在經過大量努力後提出問題+1。 – Amsakanna 2010-06-04 09:46:07

+0

供參考:我複製粘貼到一個新的項目讓它運行幾個小時。沒問題。 Vista/32 – 2010-06-05 11:08:09

回答

2

在一天之內運行一段動畫之後,雖然內存使用量增加了一些,但我沒有看到任何可怕的事情發生。

我最終做的是在kaxaml的XP SP3上運行你的例子,然後用perfmon做了一些窮人的性能檢查。

如果您之前沒有使用過perfmon,只需從開始菜單中運行 - > perfmon即可。它可能會列出一些已經在列表中的計數器,但如果您不想監視這些值,則可以單擊每個計數器並刪除它們。我不認爲在你的情況下CPU利用率是問題,但你可以保留在那裏以防萬一。

右鍵單擊任意處並選擇「添加計數器」,然後在「性能對象」下選擇「.NET CLR內存」。在右側,選擇感興趣的可執行文件(在我的情況下,它是「Kaxaml」)。在左側,選擇「所有堆中的#字節」。我還會將採樣率更改爲更大的值,例如300秒,這樣您可以更好地瞭解您在經歷減速期間的變化率。

這可能不會幫助您找到放緩,但這是合理的第一步。也許你還應該下載ANTS 5 profiler的試用版,看看它是否能捕捉到任何奇怪的東西。

+0

謝謝戴夫。我不覺得這只是造成問題的時間。我認爲這一定是一個綜合因素。我接受這個答案是因爲檢查性能的提示。 – 2010-06-10 13:44:45

0

我認爲在WPF中你會遇到不能很好渲染的機器。我在我的筆記本電腦上試過這個,很好。

1

我已經讓動畫運行了30多個小時,它沒有變慢或變得波濤洶涌,但我正在運行Win 7。我讓它在XP虛擬機上運行了幾個小時,運行良好。

我最好的猜測:視頻驅動程序

理由:視頻驅動程序在系統中最複雜的驅動程序,有很多事情要做你的電腦的整體性能。儘管動畫調度計時器有可能落後,除非你使用大量的CPU,這是不太可能的。

建議:

  • 檢查驅動程序更新
  • 嘗試不同的視頻卡(如果可能)
  • 裂開性能監視器,並抓住每一個WPF &的DirectX防止可能並隨時監視
0

您有任何網絡瀏覽器打開嗎?我有一個類似的問題,我正在運行一個動畫,那裏它的波濤洶涌......沒有什麼可怕的,它只是顯而易見而且令人討厭,就像每隔半秒左右發生微觀口吃......

在預感上,谷歌瀏覽器關閉,我已經打開,口吃完全解決。如果您在運行時打開任何Web瀏覽器,請嘗試關閉它們,看看它是否有幫助,它對我有用。

相關問題