先说明思路:一个故事版Storyboard,两个双精度动画帧DoubleAnimation。

一个一个执行的原理:控制动画开始时间(例如第一个动画用时2秒,第二个动画就第2秒起开始执行。)

XAML:

<!--#region 动画1-->
<!--#region Border-->
<Border x:Name="border" BorderBrush="Black" BorderThickness="0" Margin="9.333,8.852,0,0" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Height="84.814" VerticalAlignment="Top" Width="84.814">
<Image x:Name="image" Source="Images\u10433.png"/>
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Border.RenderTransform>
</Border>
<!--#endregion--> <!--#region border-->
<Border BorderBrush="Black" BorderThickness="0" HorizontalAlignment="Left" Height="100" Margin="1.555,1.074,0,0" VerticalAlignment="Top" Width="100">
<Image x:Name="img_FanRotate" Source="Images\u10482.png" RenderTransformOrigin="0.5,0.5" d:IsHidden="True">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Image.RenderTransform>
</Image>
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Border.RenderTransform>
</Border>
<!--#endregion--> <!--#region border-->
<Border BorderBrush="Black" BorderThickness="0" HorizontalAlignment="Left" Height="100" Margin="1.555,1.074,0,0" VerticalAlignment="Top" Width="100">
<Image Source="Images\u10435.png" RenderTransformOrigin="0.5,0.5" Width="30" Height="30"/>
</Border>
<!--#endregion-->
     <Button x:Name="button" Content="暂停" HorizontalAlignment="Right" Margin="0,102.926,178.407,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
<Button x:Name="button1" Content="开始/继续" Margin="0,156.629,178.407,145.683" Click="button1_Click" HorizontalAlignment="Right" Width="75" d:LayoutOverrides="Height"/>
<Button x:Name="button2" Content="停止" HorizontalAlignment="Right" Margin="0,0,178.407,97.609" VerticalAlignment="Bottom" Width="75" Click="button2_Click"/>
<Button x:Name="button3" Content="开始" HorizontalAlignment="Right" Margin="0,54.778,178.407,0" VerticalAlignment="Top" Width="75" Click="button3_Click"/>
        <!--#endregion-->

后台代码:

     #region 创建故事版
//创建一个故事版
Storyboard storyboard = new Storyboard();
private void CreateStoryboard()
{
//定义动画1运行时间==动画2等待时间
TimeSpan ts = new TimeSpan(, , ); #region 创建第一个动画
DoubleAnimation doubleAnimation = new DoubleAnimation();
//目标角度
doubleAnimation.To = ;
//结束时间
doubleAnimation.Duration = new Duration(ts);
Storyboard.SetTarget(doubleAnimation, img_FanRotate);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"));
storyboard.Children.Add(doubleAnimation);
#endregion #region 创建第二个动画
DoubleAnimation doubleAnimation2 = new DoubleAnimation();
//目标角度
doubleAnimation2.To = ;
//设置等待时间
doubleAnimation2.BeginTime = ts;
//结束时间
doubleAnimation2.Duration = new Duration(new TimeSpan(, , ));
//故事版中设置目标
Storyboard.SetTarget(doubleAnimation2, img_FanRotate2);
//故事版中设置属性路径
Storyboard.SetTargetProperty(doubleAnimation2, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"));
//将动画添加至故事版末尾
storyboard.Children.Add(doubleAnimation2);
#endregion //开始故事版
//storyboard.Begin();
}
#endregion
   #region 按钮
//开始
private void button3_Click(object sender, RoutedEventArgs e)
{
storyboard.Begin(img_FanRotate, true);
storyboard.Begin(img_FanRotate2, true);
} //暂停
private void button_Click(object sender, RoutedEventArgs e)
{
storyboard.Pause(img_FanRotate);
storyboard.Pause(img_FanRotate2);
} //继续
private void button1_Click(object sender, RoutedEventArgs e)
{
storyboard.Resume(img_FanRotate);
storyboard.Resume(img_FanRotate2);
} //停止
private void button2_Click(object sender, RoutedEventArgs e)
{
storyboard.Stop(img_FanRotate);
storyboard.Stop(img_FanRotate2);
}
#endregion

WPF Blend 一个动画结束后另一个动画开始执行(一个一个执行)的更多相关文章

  1. jquery动画函数里面可以跟一个回调函数,表示动画结束后执行的代码

    jquery动画函数里面可以跟一个回调函数,表示动画结束后执行的代码 使用js监听动画结束后进行的操作: $ele.fadeIn(300,function(){...}) $ele.fadeOut(3 ...

  2. WPF动画结束后的行为方式

    原文:WPF动画结束后的行为方式 在WPF中可以使用Animation来完成动画功能,如移动,旋转等,最近写的一个程序需要实现控件的移动,包括自动移动和手动控制.原理很简单,就是改变控件的Margin ...

  3. JavaScript一个页面中有多个audio标签,其中一个播放结束后自动播放下一个,audio连续播放

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法

    ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块  --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...

  5. iOS 动画结束后 view的位置 待完善

    默认的动画属性,动画结束后,view会回到原始位置.但是如果设定了 CAAnimation的 removedOnCompletion 属性,那么view会保持这个位置!但是真实的接收 点击的frame ...

  6. CSS动画 防止动画结束后,回归原位

    animation-fill-mode防止动画结束后,回归原位 animation: arrowsfirst 1s; animation-timing-function: linear; animat ...

  7. css动画结束后 js无法修改translated值 .

    由于项目的需要,俺要做一些页面的转场动画. 即将是移动端,肯定是首先css动画了. 结果确发现,css动画中,如果设置animation-fill-mode: both;在动画结束后无法个性trans ...

  8. android 监听动画对象后不能播放动画

    采用监听  AnimationListener 发现不能播放动画了. 解决办法: 将动画的启动方式:animation.startnow去掉,改为如下即可 view.startAnimation(an ...

  9. JS如何监听动画结束

    场景描述 在使用JS控制动画时一般需要在动画结束后执行回调去进行DOM的相关操作,所以需要监听动画结束进行回调.JS提供了以下事件用于监听动画的结束,简单总结学习下. CSS3动画监听事件 trans ...

随机推荐

  1. Golang cpu的使用设置--GOMAXPROCS

    以下测试,使用的Go版本是1.8.3 不设置 如果没有调用runtime.GOMAXPROCS 去设置CPU,Golang默认使用所有的cpu核. 测试机器CPU有4个核,测试代码开启4个gorout ...

  2. Python Scrapy环境配置教程+使用Scrapy爬取李毅吧内容

    Python爬虫框架Scrapy Scrapy框架 1.Scrapy框架安装 直接通过这里安装scrapy会提示报错: error: Microsoft Visual C++ 14.0 is requ ...

  3. C#编程的最佳工具

    C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言.如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理.但是,这个工具列表可能会 ...

  4. 并查集(Union-Find)

    常见问题: 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的.最后要解决的是整幅图的连通性问题.比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共 ...

  5. PHP $a='abcdef';请取出$a的值并打印第一个字母

    echo $a[0];echo $a{0};echo chr(ord($a));echo substr( $a, 0,1);

  6. IIS7.0 下使用Intelligencia.UrlRewriter时Session为空问题

    背景 新年伊始,本人的开发环境由Windows Server 2003 +IIS 6 升级成了 Windows Server 2008 +IIS 7,之后便着手参加新项目的开发.项目开发后期测试过程中 ...

  7. 【支付专区】之微信支付构建请求参数xml

    /** * <p>Desc:weChat构建请求参数</p> * <p>参数名ASCII码从小到大排序(字典序)</p> * @param params ...

  8. 服务容错保护断路器Hystrix之八:Hystrix资源隔离策略

    在一个基于微服务的应用程序中,您通常需要调用多个微服务完成一个特定任务.不使用舱壁模式,这些调用默认是使用相同的线程来执行调用的,这些线程Java容器为处理所有请求预留的.在高服务器请求的情况下,一个 ...

  9. 服务容错保护断路器Hystrix之一:入门示例介绍(springcloud引入Hystrix的两种方式)

    限流知识<高可用服务设计之二:Rate limiting 限流与降级> 在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的 ...

  10. 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)

    上机练习2 1.              启动SQL Server 2008中的 SQL Server Management Studio. 2.              针对下面三张基本表进行操 ...