今天来点实际的,项目中可以真实使用的,一个Loading的动画,最后封装成一个控件,可以直接使用在项目中,先上图:

整个设计比较简单,就是在界面上画18个Path,然后通过动画改变OpacityMask的值来实现一种动态的效果.

因为整个过程比较简单,所以其实没有用到Blend,唯一一个需要注意的是Path的路径值是请美工从PS里生成的,路径如下:

<Geometry x:Key="Block">
M291.15499,85.897525
C291.15499,85.897525
301.88917,85.87921
301.88917,85.87921
301.88917,85.87921
300.38339,94.355061
300.38339,94.355061
300.38339,94.355061
292.85366,94.355042
292.85366,94.355042
292.85366,94.355042
291.15499,85.897525
291.15499,85.897525Z
</Geometry>

Path的代码如下,每个Path一次旋转特定的角度围成一个圆形

<Path x:Name="block0" Style="{StaticResource PathStyle}" Data="{StaticResource Block}"  OpacityMask="#00000000" >
<Path.RenderTransform>
<RotateTransform Angle="180"/>
</Path.RenderTransform>
</Path>
<Style x:Key="PathStyle" TargetType="Path">
<Setter Property="Fill" Value="#FF0092FF"></Setter>
<Setter Property="Stretch" Value="Fill"></Setter>
<Setter Property="RenderTransformOrigin" Value="0.5,5"></Setter>
<Setter Property="VerticalAlignment" Value="Top"></Setter>
<Setter Property="Height" Value="30"></Setter>
</Style>

单个Path的动画:

<ColorAnimationUsingKeyFrames Duration="00:00:03.6" Storyboard.TargetName="block0" Storyboard.TargetProperty="(UIElement.OpacityMask).(SolidColorBrush.Color)">
<LinearColorKeyFrame KeyTime="00:00:00.0" Value="#FF000000"/>
<LinearColorKeyFrame KeyTime="00:00:00.2" Value="#EF000000"/>
<LinearColorKeyFrame KeyTime="00:00:00.4" Value="#E2000000"/>
<LinearColorKeyFrame KeyTime="00:00:00.6" Value="#D3000000"/>
<LinearColorKeyFrame KeyTime="00:00:00.8" Value="#C6000000"/>
<LinearColorKeyFrame KeyTime="00:00:01.0" Value="#B7000000"/>
<LinearColorKeyFrame KeyTime="00:00:01.2" Value="#AA000000"/>
<LinearColorKeyFrame KeyTime="00:00:01.4" Value="#9B000000"/>
<LinearColorKeyFrame KeyTime="00:00:01.6" Value="#8E000000"/>
<LinearColorKeyFrame KeyTime="00:00:01.8" Value="#7F000000"/>
<LinearColorKeyFrame KeyTime="00:00:02.0" Value="#72000000"/>
<LinearColorKeyFrame KeyTime="00:00:02.2" Value="#63000000"/>
<LinearColorKeyFrame KeyTime="00:00:02.4" Value="#56000000"/>
<LinearColorKeyFrame KeyTime="00:00:02.6" Value="#3D000000"/>
<LinearColorKeyFrame KeyTime="00:00:02.8" Value="#26000000"/>
<LinearColorKeyFrame KeyTime="00:00:03.0" Value="#19000000"/>
<LinearColorKeyFrame KeyTime="00:00:03.2" Value="#0C000000"/>
<LinearColorKeyFrame KeyTime="00:00:03.4" Value="#00000000"/>
<LinearColorKeyFrame KeyTime="00:00:03.6" Value="#FF000000"/>
</ColorAnimationUsingKeyFrames>

源代码下载:

http://files.cnblogs.com/youngytj/LoadingAnimations.rar

WPF和Expression Blend开发实例:Loading动画的更多相关文章

  1. WPF和Expression Blend开发实例:一个样式实现的数字输入框

    原文:WPF和Expression Blend开发实例:一个样式实现的数字输入框 今天来一个比较奇淫技巧的手法,很少人用,同时也不推荐太过频繁的使用. 先上样式: <Style x:Key=&q ...

  2. WPF和Expression Blend开发实例:模拟QQ登陆界面打开和关闭特效

    不管在消费者的心中腾讯是一个怎么样的模仿者抄袭者的形象,但是腾讯在软件交互上的设计一直是一流的.正如某位已故的知名产品经理所说的:设计并非外观怎样,感觉如何.设计的是产品的工作原理.我觉得腾讯掌握了其 ...

  3. WPF和Expression Blend开发实例:充分利用Blend实现一个探照灯的效果

    本篇文章阅读的基础是在读者对于WPF有一定的了解并且有WPF相关的编码经验,对于Blend的界面布局有基础的知识.文章中对于相应的在Blend中的操作进行演示,并不会进行细致到每个属性的介绍.同时,本 ...

  4. WPF和Expression Blend开发实例:Adorner(装饰器)应用实例

    装饰器-- 表示用于修饰 UIElement 的 FrameworkElement 的抽象类 简单来说就是,在不改变一个UIElement结构的情况下,将一个Visual对象加到它上面. 应用举例: ...

  5. Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard http://silverlightchina.net/html/tips/2010/0329/934.html

    Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard 时间:2010-03-29 11:13来源:SilverlightChina.Net 作者:jv9 点击: ...

  6. Expression Blend实例动画-大坝水位升高演示

    原文:Expression Blend实例动画-大坝水位升高演示 Expression Blend是个很强大的东西,用它可以完成很多不好做的动画效果. 动画的主要元素: 时间线(Timeline) : ...

  7. Expression Blend实例中文教程(10) - 缓冲动画快速入门Easing

    随着Rich Internet application(RIA)应用技术的发展,各个公司越来越注重于项目的用户体验性,在保证其功能完善,运行稳定的基础上,绚丽的UI和人性化的操作设计会给用户带来舒适的 ...

  8. Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard

    上一篇,介绍了Silverlight动画设计基础知识,Silverlight动画是基于时间线的,对于动画的实现,其实也就是对对象属性的修改过程. 而Silverlight动画分类两种类型,From/T ...

  9. Expression Blend实例中文教程(7) - 动画基础快速入门Animation

    通过前面文章学习,已经对Blend的开发界面,以及控件有了初步的认识.本文将讲述Blend的一个核心功能,动画设计.大家也许注意到,从开篇到现在,所有的文章都是属于快速入门,是因为这些文章,都是我曾经 ...

随机推荐

  1. js 修改字符串中某些字符的样式

    var str = 'abcdefghijklmnobqrstuvwxyz'; function HightLight(e){ var reg = new RegExp(e, 'g') str = s ...

  2. 解决Linux上tomcat启动却无法访问

    linux中tomcat的安装 安装tomcat前首先要安装对应的jdk并配置Java环境 下载tomcat安装包 下载路径:https://tomcat.apache.org/download-80 ...

  3. Linux入门进阶第五天——用户管理(帐号管理 )下

    一.身份切换 为了避免 rm -rf /* 的悲剧发生,平时使用时,尽量使用一般帐号!需要环境设置等必要时才使用root 1.su命令 一般地,推荐使用su - / su - username的形式来 ...

  4. 20155232 实验一《Java开发环境的熟悉》实验报告

    20155232 实验一<Java开发环境的熟悉>实验报告 实验内容 使用JDK编译.运行简单的Java程序: 使用Eclipse 编辑.编译.运行.调试Java程序 实验要求 没有Lin ...

  5. 【课堂实践】Myod和Mycp

    实验内容 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 实验代码 od.java 截图 遇到的问题及解决办法 一开始想的方向是将得出的功能结果 ...

  6. 20155325 2016-2017-2 《Java程序设计》第3周学习总结

    教材学习内容总结 别用==直接比较浮点数运算结果. Integer默认值-128到127,若超出,需要修改系统属性,所以最好通过equals()比较. 系统错误提示:若超出数组范围,则显示ArrayI ...

  7. 20155327 实验一《Java开发环境的熟悉》实验报告

    实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 JVM.JRE.JDK的安装位置与区别: 命令行运行javac:jav ...

  8. bootstrap 4 panels已被card替换

    https://www.zhihu.com/question/34838389?sort=created 解决问题的思路不对,不应该搜不到就各种着急,应该理清思路, 既然 bootstrap4没有了3 ...

  9. Jmeter使用HTTP代理服务器录制脚本

    使用Jmeter录制脚本通常使用Badboy工具录制或者Jmeter自带的HTTP代理服务器录制脚本,这里说一下使用HTTP代理服务器录制时遇到的问题. 1.  Jmeter安装 下载得到Jmeter ...

  10. 使用IntelRealScene设备结合Cocos引擎实现体感游戏开发

    英特尔开发人员专区原文地址 Cocos游戏开发引擎对于广大开发者来说都比较熟悉,Intel RealScene是什么呢,简单理解是一种特殊的摄像头,可以捕捉用户的手势,面部表情等,进而实现AR,VR的 ...