DoubleAnimation实现了动画效果,比如会飘的云(无缝隙)等
DoubleAnimation 可以用C#写,也可以用XAML写
DoubleAnimation指定一个Double类型的属性,使其在指定的时间内由起点值到达终点值,从而形成动画效果.
应用它来实现动画效果,只要简单地指定几个参数值就可以了.
看下面的代码是改变一个按钮的大小的动画
[C#] 纯文本查看 复制代码 //指定长度变化的起点,终点与持续时间
DoubleAnimation widthAnimation =
new DoubleAnimation(200, 400, new Duration(TimeSpan.FromSeconds(0.8)));
//指定高度变化的起点,终点与持续时间
DoubleAnimation heightAnimation =
new DoubleAnimation(50, 100, new Duration(TimeSpan.FromSeconds(0.8)));
//开始动画
//变化不是阻塞的,而是异步,所以看上去长度与高度几乎是同时变化
btn.BeginAnimation(Button.WidthProperty, widthAnimation);
btn.BeginAnimation(Button.HeightProperty, heightAnimation);
这样我们就可以得到一个简单的动画,它在0.8秒内将按钮的长度由200变化到400,高度由50变化到100.
但我们会发现当动画结束后,按钮的大小保持在(400,100), 如果我们需要动画结束后将按钮大小恢复到原大小,
那么我们应该指定另外一个参数:FillBehavior
[C#] 纯文本查看 复制代码 //指定长度变化的起点,终点与持续时间,并在动画结束时恢复原值
DoubleAnimation widthAnimation =
new DoubleAnimation(200, 400, new Duration(TimeSpan.FromSeconds(0.8)), FillBehavior.Stop);
//指定高度变化的起点,终点与持续时间,并在动画结束时恢复原值
DoubleAnimation heightAnimation =
new DoubleAnimation(50, 100, new Duration(TimeSpan.FromSeconds(0.8)), FillBehavior.Stop);
分享一个动画的例子 :
[XML] 纯文本查看 复制代码 <Button Name="btnTra" Tag="Tran" Margin="5,0,0,0" ImageSource="Images/jian.png"
Click="btnClear_Click">
<Dev:ButtonEx.Triggers>
<EventTrigger RoutedEvent="Dev:ButtonEx.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="0.1" To="1.0"
RepeatBehavior="Forever" Duration="0:0:1" Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Dev:ButtonEx.Triggers>
</Dev:Button>
DoubleAnimation 可以用C#写,也可以用XAML写。
下面是分享一个C#的DoubleAnimation代码示例
[C#] 纯文本查看 复制代码 DoubleAnimation d = new DoubleAnimation(
0,
373,
new Duration(TimeSpan.FromMilliseconds(8000))
);
d.RepeatBehavior = RepeatBehavior.Forever;
d.AutoReverse = true;
Storyboard s = new Storyboard();
Storyboard.SetTarget(d, image1);
Storyboard.SetTargetProperty(d, new PropertyPath("(Canvas.Left)"));
s.Children.Add(d);
s.Begin();
|