#770 –LayoutTransform和RenderTransform属性的区别(Difference Between LayoutTransform and RenderTransform)
来源:互联网 发布:电力数据库 编辑:程序博客网 时间:2024/05/16 06:00
原文地址:https://wpf.2000things.com/2013/03/06/770-the-difference-between-a-layouttransform-and-a-rendertransform/
当要对界面元素进行2D变换的时候,你可以使用选择LayoutTransform 属性或者RenderTransform属性。
- LayoutTransform 属性 是在元素布局的过程中进行变换(布局完成之前)
- RenderTransform 属性 是在元素布局完成之后进行变换(渲染显示之前)
你可以选择其中一个进行变换,或者同时应用两个也可以。
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Vertical"> <Label Content="LayoutTransform"/> <Button Content="Push Me" Style="{StaticResource buttonStyle}"/> <Button Content="Push Me" Style="{StaticResource buttonStyle}"> <Button.LayoutTransform> <RotateTransform Angle="20"/> </Button.LayoutTransform> </Button> <Button Content="Push Me" Style="{StaticResource buttonStyle}"> <Button.LayoutTransform> <RotateTransform Angle="-20"/> </Button.LayoutTransform> </Button> </StackPanel> <StackPanel Orientation="Vertical"> <Label Content="RenderTransform"/> <Button Content="Push Me" Style="{StaticResource buttonStyle}"/> <Button Content="Push Me" Style="{StaticResource buttonStyle}"> <Button.RenderTransform> <RotateTransform Angle="20"/> </Button.RenderTransform> </Button> <Button Content="Push Me" Style="{StaticResource buttonStyle}"> <Button.RenderTransform> <RotateTransform Angle="-20"/> </Button.RenderTransform> </Button> </StackPanel></StackPanel>
上面的代码中我们将6个按钮分成两列,第一列使用LayoutTransform 属性进行变换,第二列使用RenderTransform 属性进行变换。运行的结果如下图:
从图中可以发现,第一列是先进行变换,然后在将变换后的按钮进行布局计算,因此在StackPanel中,按钮会按照自己需要的控件排列。第二列是先布局,然再布局的结果是上对按钮进行变换,因此按钮所占的布局空间不会有变化,因此导致按钮有部分重叠。
*********************************
由于LayoutTransform 在布局计算之前进行变换计算,因此如果LayoutTransform 发生了更改,比如动画更改,就会重新引发容器进行布局计算,简单来说LayoutTransform的每一次变化都需要进行一次重新布局,而RenderTransform却不会。RenderTransform计算是在布局计算完成之后进行,它不会因此重新布局。因此默认情况下,推荐使用RenderTransform进行变换,只有非常特殊的情况下才会使用LayoutTransform 。
阅读全文
0 0
- #770 –LayoutTransform和RenderTransform属性的区别(Difference Between LayoutTransform and RenderTransform)
- RenderTransform
- wpf RenderTransform
- RenderTransform特效
- 引用和指针的区别 Difference between pointer and reference
- silverlight-RenderTransform特效
- WPF: RenderTransform特效
- WPF: RenderTransform特效
- php中each和print的区别(What is the difference between echo and print?)
- 文科和理科的区别(What is the difference between science and engineering)?
- The difference between override and overload override和overload 的区别
- The difference between stack and heap(堆和栈的区别)
- Difference between shallow copy and deep copy? 浅复制和深复制的区别
- 单例模式和静态类的区别(Difference between static class and singleton pattern)
- bash与sh的区别【Difference between sh and bash】
- difference between VM, Docker and Vagrant区别
- RenderTransform、Projection、Clip、 UseLayoutRounding 说明
- web服务器和应用服务器的区别(the difference between an application server and a Web server)
- 废话记
- 全局锁和悲观锁的异常处理
- 欢迎使用CSDN-markdown编辑器
- java排序
- spring-mvc中的将data转换为json
- #770 –LayoutTransform和RenderTransform属性的区别(Difference Between LayoutTransform and RenderTransform)
- 树-堆结构练习——合并果子之哈夫曼树
- 集合---List
- canvas画柱状图及createLinearGradient颜色渐变的效果
- MongoDB:副本集的配置
- MySQL高可用之MHA的搭建
- 机器学习算法总结--决策树
- Ionic2 bug
- HDU 1262 寻找素数对