9

WPF Windows-XP SP3

単純な 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)

4

4 に答える 4

2

アニメーションを1日ちょっと実行した後、メモリ使用量は少し増えましたが、特にひどいことは何も起こっていません。

私がやったことは、kaxamlのXP SP3であなたの例を実行し、次にperfmonを使用して貧乏人のパフォーマンスチェックを行うことでした。

これまでにperfmonを使用したことがない場合は、スタートメニューから[実行]->[perfmon]を実行してください。すでにリストにいくつかのカウンターが表示される可能性がありますが、これらの値を監視したくない場合は、それぞれをクリックして削除できます。あなたの場合のCPU使用率は問題ではないと思いますが、万が一の場合に備えてそのままにしておくことができます。

任意の場所を右クリックして[カウンターの追加]を選択し、[パフォーマンスオブジェクト]で[.NETCLRメモリ]を選択します。右側で、目的の実行可能ファイルを選択します(私の場合は「Kaxaml」です)。左側で、[すべてのヒープの#バイト]を選択します。また、サンプルレートを300秒などのより大きな値に変更します。これにより、速度低下が発生している期間の変化率をより正確に把握できます。

これは速度低下を見つけるのに役立たないかもしれませんが、それは合理的な最初のステップです。たぶん、ANTS 5プロファイラーの試用版をダウンロードして、何か奇妙なものが見つかるかどうかを確認する必要があります。

于 2010-06-10T13:11:13.120 に答える
1

アニメーションを30時間以上実行しましたが、速度が低下したり途切れたりすることはありませんが、Win 7を実行しています。XPVMでも数時間実行すると、正常に実行されます。

私の最善の推測:ビデオドライバー

正当化:ビデオドライバーはシステムで最も複雑なドライバーであり、コンピューターの全体的なパフォーマンスと多くの関係があります。アニメーションディスパッチタイマーが遅れている可能性はありますが、CPUを大量に使用している場合を除いて、その可能性はほとんどありません。

提案:

  • ドライバーの更新を確認する
  • 別のビデオカードを試してください(可能な場合)
  • PerfMonをクラックして開き、可能なすべてのWPFおよびDirectXカウンターを取得して、時間をかけて監視します
于 2010-06-10T15:16:41.163 に答える
0

WPF を使用すると、レンダリングがうまくいかないマシンに出くわすことになると思います。ラップトップでこれを試してみましたが、問題ありませんでした。

于 2010-06-10T05:19:17.527 に答える
0

開いているインターネット ブラウザはありますか。私が実行していたアニメーションで同様の問題が発生し、途切れ途切れになりました...本当にひどいものは何もありませんでした。

ふと、開いていた Google Chrome を閉じると、吃音は完全に解消されました。実行中に Web ブラウザーを開いている場合は、それらを閉じてみて、それが役立つかどうかを確認してください。

于 2016-08-23T03:02:43.240 に答える