10

私は LayoutTransform と RenderTransform の両方を扱ってきましたが、それぞれが以前のプロジェクトで用途を見つけた特定のシナリオに適していることを知っています。

それでも、パフォーマンスの観点から、たとえば WPF プロファイリング ツールを使用している場合、UI パフォーマンスへの影響が少ないのはどれですか?

4

2 に答える 2

14

MSDNで指定されているとおり:

FrameworkElementに変換を適用するには、Transformを作成し、FrameworkElementクラスが提供する2つのプロパティのいずれかに適用します。LayoutTransform–レイアウトパスの前に適用される変換。変換が適用された後、レイアウトシステムは要素の変換されたサイズと位置を処理します。RenderTransform –要素の外観を変更するが、レイアウトパスの完了後に適用される変換。LayoutTransformプロパティの代わりにRenderTransformプロパティを使用すると、パフォーマンス上の利点を得ることができます。どのプロパティを使用する必要がありますか?パフォーマンス上の利点があるため、特にアニメーション化されたTransformオブジェクトを使用する場合は、可能な限りRenderTransformプロパティを使用してください。スケーリング、回転、またはスキューするときにLayoutTransformプロパティを使用し、要素の変換されたサイズに調整するために要素の親が必要です。LayoutTransformプロパティとともに使用すると、TranslateTransformオブジェクトは要素に影響を与えないように見えることに注意してください。これは、レイアウトシステムが、処理の一部として、変換された要素を元の位置に戻すためです。

そしてまた:

LayoutTransformは、レイアウトシステムによるフルパスを必要としないシナリオで呼び出すと、アプリケーションのパフォーマンスが低下する可能性があります。PanelのChildrenコレクションにLayoutTransformを適用すると、レイアウトシステムによる新しいパスがトリガーされ、画面上のすべてのオブジェクトが強制的に再測定および再配置されます。完全なアプリケーションユーザーインターフェイス(UI)を更新する場合、この機能はまさに必要なものである可能性があります。ただし、完全なレイアウトパスが必要ない場合は、RenderTransformプロパティを使用します。これは、レイアウトシステムを呼び出さないため、通常、このシナリオに適しています。

于 2012-04-26T07:59:11.407 に答える
14

グライダーカイトの答えに追加するために、RenderTransformsは可能な場合はGPUによっても処理されますが、LayoutTransformsはCPUで実行されます。

于 2012-04-26T08:01:44.670 に答える