应用LayoutTransform与RenderTransform的性能影响?

Tar*_*lil 8 wpf performance layouttransform rendertransform

我已经处理过LayoutTransform和RenderTransform,我知道每个都适合我在以前的项目中找到的特定场景.

但是,从性能角度和使用WPF分析工具时,对于一个实例,哪一个对UI性能的影响较小?

Gaz*_*yer 13

要添加到gliderkite的答案,RenderTransforms也将在有能力时由GPU处理,而LayoutTransforms在CPU上完成.


gli*_*ite 11

由MSDN指定:

要将转换应用于FrameworkElement,请创建一个Transform并将其应用于FrameworkElement类提供的两个属性之一:LayoutTransform - 在布局传递之前应用的转换.应用变换后,布局系统处理元素的变换大小和位置.RenderTransform - 一种修改元素外观的变换,但在布局传递完成后应用.通过使用RenderTransform属性而不是LayoutTransform属性,您可以获得性能优势.你应该使用哪个属性?由于它提供的性能优势,请尽可能使用RenderTransform属性,尤其是在使用动画Transform对象时.缩放,旋转或倾斜时使用LayoutTransform属性,您需要元素的父级调整为元素的变换大小.请注意,当它们与LayoutTransform属性一起使用时,TranslateTransform对象似乎对元素没有影响.这是因为布局系统将翻译后的元素作为其处理的一部分返回到其原始位置.

并且:

如果在不需要布局系统完全通过的场景中调用LayoutTransform,则会导致应用程序性能下降.将LayoutTransform应用于Panel的Children集合时,它会触发布局系统的新传递,并强制重新测量和重新排列所有屏幕上的对象.如果要更新完整的应用程序用户界面(UI),则此功能可能正是您所需要的.不过,如果你并不需要一个完整的布局通过,使用RenderTransform属性,它不会调用布局系统,因此,通常是这种情况下一个更好的选择.