WPF动态变换LayoutTransform
变换提供了自定义元素的最强大方式之一,LayoutTransform在布局前应用,从而其他控件需要重新排列以适应变换。
代码:
<Window x:Class="WpfApplication1动画.动态LayOutRransform"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="动态LayOutRransform" Height="300" Width="300">
<!--定义窗口资源-->
<Window.Resources>
<!--TargetType 指定操作的对象-->
<!--Property 操作属性 Value属性值-->
<!--Width 宽度-->
<!--Height 高度-->
<!--FontSize 字体大小-->
<!--RenderTransformOrigin 中心点 默认是 0,0 点 也就是左上角-->
<Style TargetType="{x:Type Button}">
<Setter Property="Width" Value="100"></Setter>
<Setter Property="Height" Value="60"></Setter>
<Setter Property="Margin" Value="10"></Setter>
<Setter Property="FontSize" Value="20"></Setter>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
<!--LayoutTransform属性以相同的方式变换元素-->
<Setter Property="LayoutTransform">
<Setter.Value>
<!--RotateTransform:能够让某对象产生旋转变化,
根据中心点进行顺时针旋转或逆时针旋转。-->
<RotateTransform></RotateTransform>
</Setter.Value>
</Setter>
<!--样式关联触发器-->
<Style.Triggers>
<!--MouseLeave鼠标移出事件 指定触发1的对象-->
<EventTrigger RoutedEvent="Button.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<!--RepeatBehavior:使用RepeataBehavior属性可以控制如何重复运行动画,
Forever设置为永久重复-->
<!--Duration 动画的运动时长-->
<Storyboard RepeatBehavior="Forever"
Storyboard.TargetProperty="LayoutTransform.Angle">
<DoubleAnimation From="0" To="360" Duration="0:0:2"></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<!--MouseLeave鼠标进入事件 RoutedEvent指定触发的标签和事件-->
<EventTrigger RoutedEvent="Button.MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard>
<!--RepeatBehavior:使用RepeataBehavior属性可以控制如何重复运行动画,
Forever设置为永久重复-->
<!--鼠标离开移回到0度-->
<Storyboard RepeatBehavior="Forever"
Storyboard.TargetProperty="LayoutTransform.Angle">
<DoubleAnimation From="0" Duration="0:0:1"></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<!--StackPanel栈式面板 默认是垂直排列-->
<StackPanel>
<!--Background 背景颜色 Content 文本值-->
<Button Content="Text1" Background="Yellow"></Button>
<Button Content="Text2" Background="Yellow"></Button>
<Button Content="Text3" Background="Yellow"></Button>
<Button Content="Text4" Background="Yellow"></Button>
</StackPanel>
</Window>
效果: