我曾经接触过LayoutTransform和RenderTransform,我知道每一种都适合于我在以前的项目中使用过的特定场景。
然而,从性能的角度来看,当使用WPF分析工具时,对于一个实例,哪个工具对UI性能的影响较小?
发布于 2012-04-26 15:59:11
由MSDN指定:
若要对FrameworkElement应用转换,请创建转换并将其应用于FrameworkElement类提供的两个属性之一: LayoutTransform -在布局传递之前应用的转换。在应用转换之后,布局系统处理元素的转换大小和位置。RenderTransform -修改元素外观的转换,但在布局过程完成后应用。通过使用RenderTransform属性而不是LayoutTransform属性,可以获得性能优势。应该使用哪个属性?由于其提供的性能优势,请尽可能使用RenderTransform属性,特别是在使用动画Transform对象时。在缩放、旋转或倾斜时使用LayoutTransform属性,并且您需要元素的父级来调整以适应元素的转换大小。请注意,当它们与LayoutTransform属性一起使用时,TranslateTransform对象似乎对元素没有影响。这是因为作为其处理的一部分,布局系统将翻译后的元素返回到其原始位置。
还有:
如果在不需要布局系统完整传递的方案中调用
LayoutTransform,则可能会导致应用程序性能低下。当您将LayoutTransform应用于面板的子项集合时,它会触发布局系统的新通道,并强制重新测量和重新排列屏幕上的所有对象。如果要更新完整的应用程序用户界面(UI),则此功能可能正是您所需的。但是,如果不需要完整的布局过程,请使用RenderTransform属性,该属性不会调用布局系统,因此通常是此方案的更好选择。
发布于 2012-04-26 16:01:45
为了补充gliderkite的答案,RenderTransforms也会在有能力的时候由图形处理器处理,而LayoutTransforms是在中央处理器上完成的。
https://stackoverflow.com/questions/10329298
复制相似问题