0

画像にシェーダー効果を適用したカスタムトランジションアニメーションを実現しようとしています。イージングベジェ関数をグラフィカルに指定するために作成したシステムを使用しており、スプラインと呼ばれるクラスですべてのスプラインデータを処理します。

スプラインの静的メソッドに送信される時間プロパティをアニメーション化して、ベジェデータを計算して緩和します。次に、シェーダーエフェクトのTimeプロパティに送信する計算値を取得しますが、アニメーションを再生するクラスが非UIクラスであり、抽象クラスから既に継承しているため、この遷移でbeginAnimationを使用できません。

beginAnimationを使用する場合、BeginAnimationのパラメーターとして依存関係プロパティを使用するには、抽象クラスをdependencyObjectから継承する必要がありますが、このエラーが発生します

this.BeginAnimation(TimeProperty、anim);


'MyClass'にはBeginAnimationの定義が含まれておらず、タイプ'MyClass'の最初の引数を受け入れる拡張メソッドBeginAnimationが見つかりませんでした(usingディレクティブまたはアセンブリ参照がありません)

私はUIに直接取り組んでおらず、今は完全に立ち往生しているため、この依存関係/アニメーション化可能なシステムはすべて私のニーズに適合しません

何か案が?

(dispatcherTimerを使用してトリックを実行しましたが、アニメーションが終了すると、アプリケーションの背景色が0.5秒間表示され、2番目の画像が最終的に表示されますが、販売されるため、この動作は望ましくありません。 ..)

4

2 に答える 2

0

KeyFrameアニメーションを使用します。それに単一のフレームを追加できます。例として、2番目のキーフレームごとに何かを非表示にすることができます。

于 2012-08-13T13:08:03.357 に答える
0

私はついにストーリーボードを使用してこれを実現し、抽象クラスでDependencyオブジェクトの継承を使用しました。

また、UI以外のオブジェクトでSotryboard /dependentPropertyシステムを使用するのは良くない場合でも(私の意見では)、機能します。

MyClassのTimeという名前のDependencyPropertyを0から1までアニメーション化するストーリーボードがあります。TimeのPropertyChangedCallbackで、カスタムスプラインイージング関数に応じて新しい時間値を計算し、シェーダーのProgressプロパティに影響を与えます。

とにかく心配してくれてありがとう。

于 2012-08-14T13:25:50.883 に答える