WPF动画动态变换
WPF动态变换提供了自定义元素的最强大方式之一。每个元素都能以两种不同的方式使用变换,‘RenderTransform’属性和‘LayoutTransform’属性。RenderTransform属性效率更高,是因为在布局之后才应用变换的,并且用于变换最终的渲染输出;而LayoutTransform在布局前应用,从而其他控件需要重新排列以适应变换。
下面是一个‘RenderTransform’ 属性的动态变换例子代码:
<Window x:Class=“动态变换”
xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml”
xmlns:d=“http://schemas.microsoft.com/expression/blend/2008”
xmlns:mc=“http://schemas.openxmlformats.org/markup-compatibility/2006”
xmlns:local="clr-namespace: “动态变换”
mc:Ignorable=“d”
WindowStartupLocation=“CenterScreen”
Title=“动态变换” Height=“600” Width=“900”>
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="60"/>
<Setter Property="Margin" Value="10"/>
<Setter Property="FontSize" Value="20"/>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
<Setter Property="RenderTransform">
<Setter.Value>
<TransformGroup>
<RotateTransform/>
</TransformGroup>
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="Button.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever" Storyboard.TargetProperty="RenderTransform.Children[0].Angle">
<DoubleAnimation From="0" To="360" Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="Button.MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="RenderTransform.Children[0].Angle">
<DoubleAnimation To="0" Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<Button Background="Green" />
<Button Background="Blue"/>
<Button Background="Red"/>
<Button Background="Black"/>
</StackPanel>
</Window>
下面是结果图,使用RotateTransform时,一定要使用TransformGroup,否则不能进行动画,RotateTransform能够让某对象产生旋转变化,根据中心点位置不变进行顺时针旋转或逆时针旋转。对于MediaElement元素使用RenderTransform属性比使用LayoutTransform属性更好,因为RenderTransform属性是轻量级的。而且它还可以使用方便的RenderTransformOrigin属性值,从而可以为特定的变换(如旋转)使用相对坐标。
WPF中的变形(RenderTransform)类是为了达到直接去改变某个Silverlight对象的形状(比如缩放、旋转一个元素)的目的而设计的,RenderTransform包含的变形属性成员就是专门用来改变Silverlight对象形状的,它可以实现对元素拉伸,旋转,扭曲等效果,同时变形特效也常用于辅助产生各种动画效果。变形元素包括平移变形、旋转变形、缩放变形、扭曲变形、矩阵变形和组合变形元素,变形特效常用于在不改变对象本身构成的情况下,使对象产生变形效果,所以变形元素常辅助产生Silverlight中的各种动画效果。
上一篇: WPF简单动画实例
下一篇: Java实现单例模式的几种方法