动画
WPF可以在代码中编写动画的行为,也可以在XAML中编写,我们这里只介绍XAML中的动画效果。在XAML中动画是通过叫做故事版的元属来描述,你可以设置界面元素的属性变化来产生动画的效果,这些属性可以是颜色、透明度、位置、大小尺寸等。动画的类型有ColorAnimation、DoubleAnimation、PointAnimation等。它们通过一个TimeLine的对象来实现动画效果,下面是一个DoubleAnimation的动画描述:
<DoubleAnimation From="1.0" To="0.0"
TargetProperty="(Rectangle.Opacity)"
Duration="0:0:1"
/>
DoubleAnimation动画,表示属性的状态在两个值之间变化,通过指定From和To等属性。上面的代码定义了对一个矩形对象的透明度实现动画效果,透明度的值从1变化到0, Duration属性设置完成动画的时间跨度,这里设置为1秒。前面提到,动画的描述必须放置在故事板中:
当一个矩形的透明度从1变到0,那么这个矩形就看不见了,如果我们需要恢复到原来的透明度,只要把透明度恢复到1,通过设置AutoReverse为True就可以达到目的,如果我们要一直不停的重复动画效果,可以设置RepeatBehavior为Forever,代码如下:
<Storyboard>
<DoubleAnimation From="1.0" To="0.0"
TargetProperty="(Rectangle.Opacity)"
Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever"/>
</Storyboard>
动画的触发是通过一个称作触发器的元属,触发器通常由事件来触发:
动画的触发是通过一个称作触发器的元属,触发器通常由事件来触发:<EventTrigger RoutedEvent="Rectangle.Loaded">
<BeginStoryboard>
<Storyboard>
<Storyboard><DoubleAnimation Storyboard.TargetName="MyRectangle"
Storyboard.TargetProperty="(Rectangle.Opacity)"
From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
上面代码描述了完整的一个动画过程,注意到动画的触发事件设置为Rectangle.Loaded事件。最后我们还观看一下动画的效果:
上面代码描述了完整的一个动画过程,注意到动画的触发事件设置为 Rectangle.Loaded 事件。最后我们还观看一下动画的效果:用下面的代码替换上一次例子的Viewport3D元属:
<DockPanel Margin="10">
<Rectangle Name="MyRectangle" Width="100" Height="100" Fill="Blue">
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
<EventTrigger RoutedEvent="Rectangle.Loaded"><BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="MyRectangle"
Storyboard.TargetProperty="(Rectangle.Opacity)"