uwp 图片切换动画 使用帧动画
上一篇博客使用了Timer来实现图片的切换,@lindexi_gd讨论了一下性能,我本人其实对性能这一方面不太熟,但我觉得还是有必要考虑一下,那么今天我们使用帧动画开实现以下
新建项目,添加一个Button和Image
在Page里定义资源
<Storyboard x:Key="std" x:Name="std" RepeatBehavior="Forever" AutoReverse="True">
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="image" Storyboard.TargetProperty="Source">
<DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="Resources/teemo_1.png" />
<DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="Resources/teemo_2.png"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.3" Value="Resources/teemo_3.png"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.4" Value="Resources/teemo_4.png"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="Resources/teemo_5.png"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.6" Value="Resources/teemo_6.png"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.7" Value="Resources/teemo_7.png"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.8" Value="Resources/teemo_8.png"/> </ObjectAnimationUsingKeyFrames> </Storyboard>
然后给Button添加点击事件
处理点击事件 播放动画
private void Button_Click(object sender, RoutedEventArgs e)
{
//
std.Begin();
}
然后看看帧率

如果我们用Task去卡住UI线程的话,动画就会停止
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Task.Delay().Wait();
}
这样我们可知帧动画其实是运行在UI线程上的
然后我有新建了另一个故事板
直接把每个帧的的Value属性变为BitmapImage对象
<BitmapImage x:Key="key1" UriSource="Resources/teemo_1.png"/>
<BitmapImage x:Key="key2" UriSource="Resources/teemo_2.png"/>
<BitmapImage x:Key="key3" UriSource="Resources/teemo_3.png"/>
<BitmapImage x:Key="key4" UriSource="Resources/teemo_4.png"/>
<BitmapImage x:Key="key5" UriSource="Resources/teemo_5.png"/>
<BitmapImage x:Key="key6" UriSource="Resources/teemo_6.png"/>
<BitmapImage x:Key="key7" UriSource="Resources/teemo_7.png"/>
<BitmapImage x:Key="key8" UriSource="Resources/teemo_8.png"/>
<Storyboard x:Key="std2" x:Name="std2" RepeatBehavior="Forever" AutoReverse="True">
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="image2" Storyboard.TargetProperty="Source">
<DiscreteObjectKeyFrame KeyTime="0:0:0.0" Value="{StaticResource key1}" />
<DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="{StaticResource key2}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{StaticResource key3}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.3" Value="{StaticResource key4}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.4" Value="{StaticResource key5}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{StaticResource key6}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.6" Value="{StaticResource key7}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.7" Value="{StaticResource key8}"/>
</ObjectAnimationUsingKeyFrames> </Storyboard>
点击按钮开始故事板
private void Button_Click_2(object sender, RoutedEventArgs e)
{
std2.Begin();
}
再来看看效果

同样,如果卡住UI的话,动画肯定是不会运行的
那么我们再来看看用Timer实现的帧率

从帧率上来看,第一种方式很明显帧率高很多,稳定在60左右,第二种和Timer实现的一样,帧率在9左右,我看不懂这个,但第一种方式的实现总给我一种图片在闪的感觉,期望有大手子指点一下。
@lindexi_gd
gayhub地址:https://github.com/hei12138/LOLSecond
新手,写的不好的地方请多指教
欢迎交流1329698854@qq.com
uwp 图片切换动画 使用帧动画的更多相关文章
- 3d图片切换(css3帧动画)
效果带抖动翻转隐藏,使用帧动画 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- [Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络)
[Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络) 地址: http://www.eoeandroid.com/thread-918356-1-1.html h ...
- Android动画(一)-视图动画与帧动画
项目中好久没用过动画了,所以关于动画的知识都忘光了.知识总是不用则忘.正好最近的版本要添加比较炫酷的动画效果,所以也借着这个机会,写博客来整理和总结关于动画的一些知识.也方便自己今后的查阅. Andr ...
- Android开发——View动画、帧动画和属性动画详解
0. 前言 Android动画是面试的时候经常被问到的话题.我们都知道Android动画分为三类:View动画.帧动画和属性动画. 先对这三种动画做一个概述: View动画是一种渐进式动画,通过图 ...
- uwp 图片切换动画
最近在学习安卓,LOL自定义战绩项目近乎停工,而且腾旭把界面全改了,好烦.刚好学习到安卓中的图片切换动画,我就想在LOL项目中实现一个.首先上百度查看一下,妈的,资料少的可怜. 还是自己来吧.自定义控 ...
- app引导页(背景图片切换加各个页面动画效果)
前言:不知不觉中又加班到了10点半,整个启动页面做了一天多的时间,一共有三个页面,每个页面都有动画效果,动画效果调试起来麻烦,既要跟ios统一,又要匹配各种不同的手机,然后产品经理还有可能在中途改需求 ...
- android 学习随笔二十四(动画:帧动画)
帧动画,一张张图片不断的切换,形成动画效果 * 在drawable目录下定义xml文件,子节点为animation-list,在这里定义要显示的图片和每张图片的显示时长 * FrameAnimatio ...
- CSS动画-step()帧动画
Twitter使用了一种新的动画形式,使用一系列的图片来创建帧动画. 下面是一个❤动画,鼠标移动到上面开始绽放. .heart { width: 100px; height: 100px; backg ...
- 过渡与动画 - 逐帧动画&steps调速函数
写在前面 上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果. 但是如果我们想要实现逐帧动画,基于贝塞尔曲线的调速函数就显得有些无能为力了,因为我们并不需要帧与帧之间的过 ...
随机推荐
- SpringMvc相关配置的作用
1. <!-- 配置 handlerAdapter--> <bean class="org.springframework.web.servlet.mvc.SimpleCo ...
- 关于DOM对象与JQuery对象的那些事
这个问题源自上一次的工作室讨论班,主题是"jQuery选择器的使用",在讨论班的结尾,我留了一个思考题: jQuery获取到的对象和直接调用原生Javascript方法获得的对象 ...
- JAVA_javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
tomcat访问https请求返回: javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name at sun.se ...
- Mac 终端 Linux 命令总结(简单命令)
目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...
- Ant环境变量配置
Ant环境变量配置 1.新建系统变量ANT_HOME 变量名: ANT_HOME 变量值: D:\biancheng\apache-ant-1.7.1 2.修改PATH 变量值最后面 ...
- webform 上传
要使用控件 - FileUpload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.value.le ...
- PMP备考_第五章_项目范围管理_实践思考
项目范围管理 前言 今天学习项目范围管理的内容,深切的感受到了原单位在项目管理方面存在的问题,今天在这里做一个总结,既相当于对项目范围的一个学习整理,也相当于自己对项目实践过程中存在问题的一个思考. ...
- Oracle查询和问题简记
现在做两个版本的系统,一个用的数据库是Access,另一个就是Oracle了.每个数据库支持的的查询SQL语句都有所区别,这里主要针对Access和Oracle做 记录. 首先贴出遇到问题最多的一条语 ...
- web api Route属性定义
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...
- Powershell 十个常见任务
学习Powershell的时候,基本的语法也了解了一些,但是就是不知道要写些什么?作为一个过来者,和大家一起分享下常见的几个管理任务脚本. 1.更改本地Administrator账号密码 [ADSI] ...