zoukankan      html  css  js  c++  java
  • 【WPF】RenderTransform和LayoutTransform

    布局系统
      在WPF中,许多绘图任务通过使用变换(transform)可以变得更加简单——变换是通过不加通告地切换形状或元素使用的坐标系统来改变形状或元素绘制方式的对象。在WPF中,变换的一些类大多继承自System.Windows.Media.Trandform。下面是这些类的列表:
    • TranslateTransform:将坐标系统移动一定的距离。
    • RolateTransform:旋转坐标系统。
    • ScaleTransform:放大或最小坐标系统。
    • SkewTransform:通过倾斜一定的角度扭曲坐标系统。
    • MatrixTransform:使用提供的矩阵的乘积修改坐标系统。
    • TransfromGroup:组合多个变换。
    变换形状
      为了变换形状,将RenderTransform属性指定为希望使用的变换对象,根据使用的变换对象,需要填充不同的属性以配置变换对象,也就是我们上面列举的一些类。 列如:
    1 <Button Content="I AM Rotated 35" Width="100">
    2         <Button.RenderTransform>
    3                 <RotateTransform Angle="35"></RotateTransform>
    4           </Button.RenderTransform>
    5 </Button>

      这里我们将按钮旋转了35度。但是RenderTransform不是在WPF积累中定义的唯一与变换相关的属性。FrameworkElement类还定义了一个LayoutTransform属性。LayoutTransform属性以相同的方式变换元素,但它是在布局之前执行工作,开销比RenderTransform要大,那么我们看一下两者的区别:

     1 <Grid>
     2         <Grid.RowDefinitions>
     3             <RowDefinition/>
     4             <RowDefinition/>
     5         </Grid.RowDefinitions>
     6         <StackPanel>
     7             <Button Content="I AM Rotated 35" Width="100">
     8                 <Button.RenderTransform>
     9                     <RotateTransform Angle="35"></RotateTransform>
    10                 </Button.RenderTransform>
    11             </Button>
    12             <Button>I am not</Button>
    13         </StackPanel>
    14 
    15         <StackPanel Grid.Row="1">
    16             <Button Content="I AM Rotated 35" Width="100">
    17                 <Button.LayoutTransform>
    18                     <RotateTransform Angle="35"></RotateTransform>
    19                 </Button.LayoutTransform>
    20             </Button>
    21             <Button>I am not</Button>
    22         </StackPanel>
    23     </Grid>

      该窗口包含两个StackPanel,分别都有两个按钮,一个使用了RenderTransform属性,另一个使用LayoutTransform,第一个StackPanel对两个按钮进行布局时,第一个按钮正常定位,并且在即将呈现之前旋转改按钮。因此旋转过的按钮被重叠在下面。而第二个StackPanel容器中,第一个按钮在呈现之后才进行旋转,也就是LayoutTransform在布局之前执行其工作。看一下效果:

    可以看出WPF在对图形渲染方面的支持。

  • 相关阅读:
    ts 与 C#的 一个差异的地方
    .net core的 几个模板比较
    iOS 绘画学习(3)
    在你的iPad上调整图片尺寸
    Pholio应用开发指南:通过平铺组成大的图片
    学会爱上iOS自动布局(Auto Layout)
    iOS 绘画学习(2)
    iOS 绘画学习(1)
    iOS 证书管理、验证、打包流程
    UIScrollView 技巧(2)
  • 原文地址:https://www.cnblogs.com/wywnet/p/3993161.html
Copyright © 2011-2022 走看看