动画缓动-*

  动画缓动

线性动画有一个缺点,通常让人觉得机械和不够自然改进动画并创建更趋自然的动画

秘诀改变变化速率。不是创建以固定不变的速率改变属性的动画,而是需要设计根

据某种方式加速或减速的动画,实现更趋自然的动画的最简单方法是使用预置的缓动函

(EasingFunction)EasyingFunction属性只能接受单个缓动函数对象,所以不能为同

一个动画结合不同的缓动函数。

缓动函数类

在继续分析不同的缓动类之前,理解缓动函数的应用时机是很重要的。所有的缓动函数类都继承自EasingFunctionBase类,并且继承了EasingMode属性

EasingMode属性有三个值:分别是:EaseIn(在动画开始时应用缓动效果)EaseOut(动画结束时应用缓动效果)EaseInOut(在开始和结束时应用缓动动画)。当应用缓动函数时不会改变动画的持续时间。

缓动函数常用类

BackEase :(说明)当使用EaseIn模式应用该缓动函数时,在动画开始之前拉回动画,当使用EaseOut模式应用该缓动函数时,允许动画稍微超越,然后拉回。

          (属性) Amplitude属性决定了拉回和超越的量。默认值是1,可减小该属性值(大于0的任何值)以缩减效果,或增加该属性值放大效果。

ElasticEase :(说明)当使用EaseOut模式应用该缓动函数时,使动画超越其最大值并前后摆动,逐渐减慢。当时用EaseIn模式应用该缓动函数时,动画在其开始值周围前后摆动,逐渐增加。   缓动模式

            (属性)Oscillations属性控制动画前后摆动的次数(振荡次数

BounceEase :(说明)执行与Elastic缓东函数类似的效果,只是弹跳永远不会超越初始值或最终值。

(属性) Bounces属性控制动画回调的次数(默认是2)

CircleEase :(说明)使用圆函数加速(使用EaseIn模式), 或减速(使用EaseOut模式)

CublicEase :(说明)使用基于时间立方的函数加速,其效果与Circle类似,但是加速效果更缓和。

QuadraticEase :(说明)使用基于时间平方的函数加速,效果与CublicEase类似,但加速过程更明显。

自定义缓动函数

创建自定义缓动函数一般需要以下几个步骤:

a)、新建一个类,让其继承自EasingFunctionBase类。

b)、重写EaseInCore()方法和CreateInstanceCore()方法。

c)、定义依赖属性。

d)、引用

动态变换(整合了一些动画的例子)

  1. 变换提供了自定义元素的最强大方式之一。每个元素都能以两种不同的方式使用变换RenderTransform属性和LayoutTransform属性。RenderTransform属性效率更高。因为是在布局之后应用变换并且用于变换最终的渲染输出LayoutTransform在布局前应用,从而其他控件需要重新排列以适应变换。

(1)、使用 变形(RenderTransform)类

1、动态改变多个变换。

就是在TransformGroup中放置多个变换类。

2、动态改变画刷。

使用ColorAnimation改变颜色,使用PointAnimatin改变坐标。

动态改变像素着色器Effect效果

在WPF中,可以使用BitmapEffect对象为每一个Visual对象生成各种各样的效果,一个Visual对象可以设置一种或多种BitmapEffect效果、WPF内置了几种效果:OuterGlowBitmapEffect(外发光)、DropShadowBitmapEffect(阴影)、EmbossBitmapEffect(浮雕)、BlurBitmapEffect(斜角)

控件属性Effect

<!--BlurEffect模糊效果:通过设置BlurEffectRadius属性可以

设置模糊度-->

  <!--按钮效果Effect-->

            <Button.Effect>

                <!--BlurEffect模糊效果:通过设置BlurEffect的Radius属性可以设置模糊度-->

                <BlurEffect Radius="0"/>

            </Button.Effect>

缓动关键帧。

由离散关键帧可以得出:尽管关键帧动画被分割成多段,但每段仍使用普通的线性插值。常用的缓动关键帧类有:EasingDoubleKeyFrameEasingColorKeyFrameEasyingPointKeyFrame每个缓动关键帧类和对应的线性插值关键帧类的工作方式相同,但是额外提供了EasyingFunction属性。

基于帧的动画。

使用帧的动画要为静态的CompositionTarger.Rendering事件关联事件处理程序,一旦关联这个处理程序,WPF就开始不断地调用这个事件处理程序,WPF将每秒调用60次。当动画结束后,分离事件处理程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值