2009-06-06 8 views
2

私はここで何が欠けているのか分かりません。WPFのアニメーショントランジション

問題は次のとおりです。
一部の内部UI要素の表示を切り替えるトリガーを持つ(コントロール|データ)テンプレートを検討してください。例えば。 IsReadOnly == trueのときにTextBlockを表示し、IsReadOnly == falseのときにTextBoxを表示します。

アニメーションなしでこれを行うと、すべてが完璧です.1人または2人のセッターがその仕事をします。しかし、派手なアニメーションが必要な場合はどうすればいいですか?次に、EnterActionsとExitActionsで開始するアニメーションを指定します。

しかし、問題はアニメーションが正確に何をすべきかということです。 WPFの固定サイズはほとんど常に間違った方法であり、絶対に柔軟性がないので、幅/高さを変更することは実際には醜いようです。

これまでのところ、MaxHeight/MaxWidthをある程度修正することができましたが、これはもう少し柔軟性がありますが、残念ながら残念です。

要素の幅/高さを0から "必要なだけ"アニメーション化する方法をWPFに教えてください。

UPD:現在、私はOpacityとRenderTransformをアニメーション化して動作します。時には、要素が変形せずにスライドするアニメーションを見たいと思うことがあります。これは重要な質問ではなく、私にとっては非常に興味深いものです。

答えて

3

ほとんどのアニメーションでは、レンダリングトランスフォームまたは不透明度のいずれか、またはその両方を使用する必要があります。私は他のものを使うことはほとんどありません。

テキストを「拡大」にするには、レンダートランスフォームのスケールをアニメートします。中心点を忘れないでください。

Expression Blendを使用すると、目的の効果をすぐに得ることができます。

+0

はい、私はRenderTransformアニメーションも使用しますが、時には、コントロールのアニメーションが「圧縮」と「圧縮解除」されているのを見たくありません。 – arconaut

0

私は、不透明度をアニメーション化することをお勧めします:TextBoxがフェードインしている間にTextBlockをフェードアウトさせ、逆も同様です。

1

Blend SDKのトランジションエフェクトの使用を検討してください。内部的にピクセルシェーダを使用するカスタムTransitionControlを構築する良い説明はhereです。

関連する問題