Wie kann man wissen, warum eine Animation stottert?

8

Ich habe ein paar ziemlich einfache Animationen (Text bewegen, Ellipsen bewegen etc.) und läuft im Vollbildmodus (1920x1080 minus Taskleiste). Die WPF Performance Suite meldet während der gesamten Animation eine gute Framerate von 50 FPS. Dirty Rect Addition liegt irgendwo bei 300 rect / s, die SW-Frames liegen zwischen 0 und 4 und die HW-Frames liegen zwischen 3 und 5. Die Videospeicher-Nutzung liegt bei ca. 80 MB.

Problem ist, dass die Animationen jede zweite halbe Sekunde stottern. Es ist definitiv nicht flüssig: - (

Meine Maschine ist ein neuer Dell Laptop XPS 15 mit der GeForce GT 435 mit 2GB Speicher. - Die Fahrer sind auf dem neuesten Stand. (Das gleiche Verhalten tritt auch bei meinem Netbook (im Vollbildmodus) auf, daher glaube ich nicht, dass es hardwarebezogen ist.)

Wenn ich das Fenster kleiner mache, verschwindet das Stottern.

Das Stottern tritt mit den einfachsten Animationen auf - sogar mit nur ein paar Elementen, aber das Hinzufügen von mehr Elementen macht es sicherlich auffälliger.

Wie kann ich herausfinden, was dieses Stottern verursacht?

Wenn ich daran denke, habe ich keine WPF-Animationen gesehen, die im Vollbildmodus flüssig laufen. Ist das überhaupt möglich?

    
Patrick Klug 16.12.2010, 10:25
quelle

3 Antworten

3

Haben Sie versucht, eine niedrigere "maximale Bildrate" für die Animation festzulegen?

%Vor%

Wenn Ihre Animation eine umfangreiche Neuberechnung von untergeordneten Elementen oder übergeordneten Elementen verursacht, wirkt sich die Änderung von DesiredFrameRate kaskadierend auf die Anzahl der vom System ausgeführten Berechnungen aus. Überprüfen Sie auch den Abschnitt "Hinweise" dieses link . Es erklärt, warum / wann Sie es verwenden sollten.

Wenn Sie durch Festlegen einer niedrigeren Bildrate Ihr Stottern beheben, müssen Sie Ihr XAML vereinfachen, um den Umfang der Neuberechnung für jeden Frame Ihrer Animation zu begrenzen (Begrenzung der Größe der untergeordneten oder übergeordneten Objekte - oder in irgendeiner Weise beeinflusst) - um alle Frames / Änderungen, die durch die Animation gemacht werden.

Sie können auch die " WPF Performance Suite " ausprobieren. Es ist eine großartige Sammlung von Tools, mit denen Sie feststellen können, was genau in Ihrer WPF-App passiert, welche Teile Ihres Fensters neu gezeichnet werden und wann und wie hoch die CPU-Auslastung jedes einzelnen Ihrer XAML-Elemente ist!

Hoffe, das hilft!

    
JFTxJ 10.07.2012 13:45
quelle
1

Patrick,

Ich habe keine Antworten. Alles, was ich tun kann, ist Solidarität. Ich versuche ein ItemsControl zu animieren. Das Konzept ist ziemlich einfach. Ich habe eine ListView und in der ListView habe ich eine GridView. Ich möchte, dass die Elemente in der GridView problemlos von einer Zeile in eine andere Zeile wechseln, wenn die zugrunde liegende Liste sortiert wird. So bleibt beispielsweise eine sortierte Liste sortiert, wenn sich die Werte in der Liste ändern.

Ich habe das bemerkt: Animation auf mäßig komplexen Steuerungen ist ein CPU-Schwein. Das Stottern ist ziemlich sicher, hängt einfach damit zusammen, dass die CPU ausgereizt ist (ich habe bemerkt, dass du das CPU-Diagramm nicht oben auf deinem Dump angegeben hast). Halten Sie die CPU um 50% und die Animation erscheint glatt, über 75% und Sie bekommen diese Stotters.    Ich arbeite immer noch an dem Problem, aber ich denke, es geht tiefer als mein Code.

Don

    
Mike Doonsebury 02.05.2012 00:12
quelle
0

Ich hatte ein ähnliches Problem, bei dem es stotternd war, nichts wirklich großes, es sah nur hier und da stotternd aus, während ich das Programm lief. Kurz gesagt, ich habe Google Chrome während der Ausführung geschlossen und das Problem behoben, das Scrollen wurde völlig reibungslos ...

Also mein Rat wäre, wenn Sie Internetbrowser geöffnet haben, prüfen Sie, ob das Schließen das Problem behebt.

    
MattE 23.08.2016 02:58
quelle

Tags und Links