• 【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在对图形渲染方面的支持。

  • 相关阅读:
    spring boot学习01【搭建环境、创建第一个spring boot项目】
    C#窗体学生成绩管理系统
    七、整合SQL基础和PL-SQL基础
    六、异常处理概念
    五、PL/SQL循环、游标、函数和过程
    四、SQL基础知识--约束和视图
    三、Oracle常用内置函数
    二、事务
    一、SQL基础知识点补充
    前端未掌握知识点记录
  • 原文地址:https://www.cnblogs.com/wywnet/p/3993161.html
Copyright © 2020-2023  润新知