[WPF] WPFアニメーションを理解するために学ぶの第18章

  (例えばWindowsフォームとMFCとして特にWPFフレームワークの前に、)多くのユーザーの枠組みの中で、開発者はスクラッチアニメーションシステムから自分自身を構築する必要があります。最も一般的な技術は、タイマーと、いくつかのカスタム描画ロジックを使用することです。WPFは、このような状況を変更するには、プロパティベースのアニメーションシステム伝わってきます。2次の二つの間の差を説明します。

まず、時間ベースのアニメーション

  あなたは、ダイアログボックスについてWindowsフォームアプリケーションでテキストのブロックを回転させる必要がある場合。以下に、溶液を構築する従来の方法です。

  (1)定期的にトリガタイマーを作成し(例えば、50ms毎ウィンドウ回)。

  (2)タイマがトリガされると、新たな回転角度としてのアニメーションの詳細のいくつか、関連付けられたイベントハンドラを使用して計算しました。一部または全部のウィンドウ、ウィンドウの無効。

  (3)直後に、Windowsは、トリガーのカスタム描画コードを自分自身を再描画するウィンドウをお願いします。

  (4)カスタムコードを描画、テキストが回転レンダリングされます。

  実装するのは簡単ですが、それは通常のアプリケーションウィンドウを継承するタイマーベースのソリューションは非常に面倒ですが。以下は、この解決策のいくつかの問題が存在するのリストです:

  •   ピクセルではなく、コントロールを描画しますロータリーWindowsは、テキスト、必要性の低レベルのGDI +の描画サポートフォーム。GDI +は使いやすいですが、よく(例えば、ボタン、テキストボックスやラベルなど)通常のウィンドウ要素と協調していません。互いに分離アニメーションコンテンツ二環を制御する必要があり、アニメーション内の任意のユーザ対話要素を含むべきではありません。あなたは、ボタンを回転しません。
  •   単一のアニメーションと仮定あなたは2つのアニメーションを実行することを決定した場合、我々はすべてのアニメーションコードの再書き込みに必要-と、より複雑になります。この点でWPFは、それは、単一の簡単なアニメーションのアニメーションよりも複雑構築することができ、さらに強力です。
  •   アニメーションのフレームレートが固定されていますタイマーは完全に設定されたフレームレートを決定されます。時間間隔が変更された場合、アニメーションコードが(計算の実装に応じて)変更する必要があるかもしれません。また、固定フレームレートの選択は必ずしも特定のコンピュータ・グラフィックス・ハードウェアのための理想的ではありません。
  •   より複雑なコードの複雑なアニメーションが指数関数的な成長が必要です回転したテキストの例としては、非常にシンプルですが、あなたが特定の経路に沿って比較的小さなベクター描画を移動する場合、それははるかに困難です。WPFでは、複雑なアニメーションを定義することができる(そして、あなたは、サードパーティの設計ツール生成されたアニメーションを使用することができます)XAMLで。

  タイマーベースのアニメーションは、まだいくつかの欠点があります:コードは非常に複雑な効果のための柔軟な無秩序となり、最高のパフォーマンス工を得ることができないではありませんが発生します。

アニメーションプロパティに基づいて第2、

  WPFは、より高度なモデルを提供し、我々は関係なく、レンダリングの、このモデルの定義アニメーションに焦点を当てることができます。このモデルは、依存関係プロパティインフラストラクチャに基づいています。基本的に、WPFのアニメーションは、単純に一定の時間間隔で依存関係プロパティの価値が一方向に変化しています。

  例えば、アニメーション内のボタンの幅を変更するためのボタンを増加または減少させます。ボタンが点滅するためには、ボタンLinearGradientBrushブラシ特性の背景を変更するために使用されてもよいです。正しいアニメーションを作成するための秘訣を変更する必要が属性かを決めます。

  あなたが達成したい場合は、他のバリエーションのプロパティを変更することによって達成されていない、上記の方法では動作しません。たとえば、アニメーションの一部としての要素を追加または削除することはできません。同様に、遷移がWPFを実行するために必要とされないシーンのシーンの開始と終了の間に(ある程度の柔軟性の回避策は、この効果をシミュレートすることができるが)。最後に、アプリケーション缶のみ依存プロパティアニメーション、ためのみ依存プロパティアニメーションアプリケーションのみ依存プロパティは、動的プロパティの識別システムを使用し、システムがアニメーション考慮するからです。

  一見、財産関係WPFのアニメーションの性質は大きな限界が見えます。仕事にWPFを使用している場合しかし、あなたはそれが非常に強力です見つけることができます。実際には、パブリックプロパティでサポートされている各要素の使用は非常にもう少しアニメーションを実現することができます。

  しかし、多くの場合、プロパティベースのアニメーションシステムが動作しません。経験則として、属性ベースのアニメーションシステムは、動的な通常のWindowsアプリケーションを追加するための素晴らしい方法です。あなたは対話型のショッピングツールのフロントエンドをタッチアップしたい場合たとえば、それは完全に基づくアニメーションシステム属性動作します。しかし、あなたはソフィーの中核目的のアプリケーションとしてのアニメーションを使用する必要がある、とあなたはアニメーションは、アプリケーションのライフサイクル全体で継続的に実行したい場合は、より柔軟な、より強力な技術であることが必要な場合があります。あなたは、複雑な物理計算を使用して、基本的なゲームや衝突モデルを作成している場合たとえば、私たちはより良いアニメーションを制御する必要があります。

  

おすすめ

転載: www.cnblogs.com/Peter-Luo/p/12364385.html