博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sliverlight之 故事板
阅读量:4314 次
发布时间:2019-06-06

本文共 4052 字,大约阅读时间需要 13 分钟。

见Project19

(1) 将一张图片每隔一秒旋转72度,看看效果是什么样(使用定时器)

说明:

前端

 

代码

DispatcherTimer dt = new DispatcherTimer();dt.Interval = TimeSpan.FromMilliseconds(1000);dt.Tick += dt_Tick;dt.Start();void dt_Tick(object sender, EventArgs e){myRotate.Angle += 72; }

 

 

(2) 什么是故事板,它用什么标签表示,它被定义在哪里

说明:

故事板,可以定义动画效果,它比定时器,效果更平滑,更简单
故事板使用StoryBoard标签定义,一般定义在Resource资源标签内
故事板本质是更改某个控件或标签的属性值

作用源:Storyboard.TargetName和Storyboard.TargetProperty

常用属性:

From 初始值
To(或By) To为终点值,By的终点值=From值+By值
Duration 动画持续时间
AutoReverse 是否倒着播放
RepeatBehavior 播放次数 3次则写成"3x" 永久播放则写成"Forever"

启动动画 动画名.Begin();

 

(3) Animation有哪些类型,应该如何根据实际情况去使用不同的Animation

说明:

动画类别常用的包括3大类

DoubleAnimation 被修改的属性值是Double类型(也包括int和float类型)
ColorAnimation 被修改的属性值是Color一类,常用于修改Brush画刷的Color值
PointAnimation 更改一个Point点,在几何绘图Geometry中用到比较多

 

(4) 将(1)中的效果,用故事板实现

说明:

 

代码:

myStoryBoard.Begin();

 

(5) 请区分在xaml中Name和x:Name的用法及区别的

说明:

一般在控件中,可以直接使用Name
而在一些属性标签中定义,就不能直接使用Name,需要用x:Name
另外,在控件中,也可以用x:Name,x:Name的应用范围更大些

 

(6) Animation中的属性To和By有什么区别

说明:

From="30" To="70" By="70"
To 终点值70
By 终点值100 (30+70)

(7) 将(2)示例再加一个位移的动画

说明:

 

代码:

myStoryBoard.Begin();

myStoryBoard.Begin();

 

(8) 故事板的开始,暂停,继续,停止,分别对应什么方法

说明:

开始 Begin()
暂停 Pause()
继续 Resume()
停止 Stop()

 

(9) 在中文帮助里,搜索“动画概述”,了解一下动画

说明:

两大动画类型

From/To/By动画: 起始值和结束值之间进行动画处理

关键帧动画:可以有多个目标值,相对前者,更强大

 

(10) DoubleAnimation中的AutoReverse属性有什么作用,用示例演示

说明:

AutoReverse 是否倒着播放

(11) DoubleAnimation中的RepeterBehavior有什么作用,用示例演示(它的值3x,或者Forever分别代表什么意思)

说明:

RepeatBehavior 播放次数 3次则写成"3x" 永久播放则写成"Forever"

(12) 有两个动画,如何让第2个动画延迟3秒后开始播放,用示例演示(使用BeginTime属性)

说明:

myStoryBoard.Begin();story2.BeginTime = TimeSpan.FromSeconds(5);story2.Begin();

 

(13) 用ColorAnimation实现一个Rectangel由红变绿,一次时间5秒,重复3次。你会遇到哪些问题,说明原因,怎么解决

说明:

第1种方式,为画刷定义动画

 

</Storyboard>

第2种:为控件自身定义动画,注意Storyboard.TargetProperty="Fill"会报错哦,所以要写成"(Rectangle.Fill).(SolidColorBrush.Color)"

 

 

(14) 动画按顺序播放,有哪两种方法

说明:

第1种 BeginTime()方法

story1.Begin();story2.BeginTime = TimeSpan.FromSeconds(3); //第2个动画3秒后,开始播放story2.Begin();

 

第2种方法 Completed事件

private void story1_Completed(object sender, EventArgs e) //动画1完成以后,动画2开始播放{story2.Begin();}

 

第1种方法,更精确到具体时间,前面的动画或许没有播放完成

第2种动画,表示前面的动画已经播放完成了

(15) 演示一下PointAnimation动画效果

说明:

PointAnimation更改的是一个Point坐标属性,一般用在几何绘图Geometry中比较多

 

 

(16) 什么是关键帧动画,查看中文帮助和示例了解

说明:

关键帧动画,通过设置多种多个动画补间,可以做出很炫的动画效果,它比线性插值动画更强大,可以控制动画变化节奏的快慢

以关键帧动画DoubleAnimationUsingKeyFrames为例

它有3种动画补间
LinearDoubleKeyFrame 匀速运动
DiscreteDoubleKeyFrame 离散运动,直接跳到这个值,没有任何变化特性
SplineDoubleKeyFrame 多键关键帧,采用KeySpline设置两个控制点,控制运动快慢

 

(17) 用关键帧动画实现将一个按钮的旋转

说明:

使用关键帧动画DoubleAnimationUsingKeyFrames

 

(18) 关键帧动画中的KeyTime表示什么含义,它和Duration有什么区别

说明:

KeyTime="0:0:2" 表示在第2秒时,执行当前这个补间,而并非是一个时间段
而Duration 表示的是一个时间段,指整个动画的时长

 

(19) SplineDoubleKeyFrame中的KeySpline表示什么含义

说明:

KeySpline可以控制运动的快慢节奏,它通过两个控制点Point(x,y)来设置

KeySpline="0.0,0.0 0.0,0.0" 表示匀速运动
KeySpline="0.9,0.0 0.3,0.0" 表示先快后慢
KeySpline="0.0,0.9 0.0,0.3" 没发现什么显著变化

官方解释:

KeySpline="控制点1(x,y) 控制点2(x2,y2)",这两个控制点对应一条三次贝塞尔曲线上的两个控制点,但并非对应实际的x轴和y轴坐标,而是表示两个逻辑控制点
控制点的x,y坐标值0至1之间

(20) 关键帧动画和线性插值动画有哪些区别

说明:

关键帧动画:可以控制动画变化快慢的节奏
线性播值动画:匀速运动

它们都对应着这几种动画类型:Double,Color,Point

关键帧动画标签=线性播值动画标签 + UsingKeyFrames

 

(21) 把(13)用关键帧动画实现

说明:

第1秒先快后慢变Blue,第4秒猛然变Yellow,第7秒渐渐的匀速变成Green

 

 

(22) 把(15)用关键帧动画实现

说明:使用关键帧动画PointAnimationUsingKeyFrames实现

我的观察:vs2012运行时,在第2次启动时,浏览器卡死了(不知道是不是消耗资源的缘故)

 

(23) 会使用C#管理动画

说明:参照“银光志”278页

有时间,再补上...

(24) 任务:结合动画与控件开发跑马灯图片浏览器

说明:参照“银光志”281页

有时间,再补上...

转载于:https://www.cnblogs.com/huaci/p/4409596.html

你可能感兴趣的文章
oracle的级联更新、删除
查看>>
多浏览器开发需要注意的问题之一
查看>>
Maven配置
查看>>
HttpServletRequest /HttpServletResponse
查看>>
SAM4E单片机之旅——24、使用DSP库求向量数量积
查看>>
从远程库克隆库
查看>>
codeforces Unusual Product
查看>>
hdu4348 - To the moon 可持久化线段树 区间修改 离线处理
查看>>
springMVC中一个class中的多个方法
查看>>
Linux系统安装出错后出现grub rescue的修复方法
查看>>
线段树模板整理
查看>>
[教程][6月4日更新]VMware 8.02虚拟机安装MAC lion 10.7.3教程 附送原版提取镜像InstallESD.iso!...
查看>>
[iOS问题归总]iPhone上传项目遇到的问题
查看>>
Python天天美味(总) --转
查看>>
Spring Framework tutorial
查看>>
【VS开发】win7下让程序默认以管理员身份运行
查看>>
【机器学习】Learning to Rank 简介
查看>>
Unity 使用实体类
查看>>
【转】通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件...
查看>>
MySQL常见注意事项及优化
查看>>