• “颜色”是对象的一个重要属性,现实世界中颜色的变化是无穷的,而计算机不过是模拟现实世界,颜色变化是有限的,其精度受计算机字长的影响。“颜色”是一门大学科,它融艺术、审美、心理等于一体。
    在PowerPoint中,用红色通道、绿色通道和蓝色通道描述颜色。可以通过二种方式来指定颜色:
    (1)RGB函数,格式:RGB(r,g,b),r指定红色分量(其值范围0-255)、g指定绿色分量(其值范围0-255)、b指定蓝色分量(其值范围0-255),该函数返回一个单一纯色。
    (2)从 32 位调色板中指定一种颜色,其格式为 #rrggbb,其中 rr 是指定红色相对量的两位十六进制数,gg 指定绿色相对量,bb 指定蓝色相对量。
    颜色变化是PowerPoint动画中比较重要的部分,主要用于改变对象的填充色,线条色,字体色,项目符号色等。PowerPoint动画对象模型中提供了丰富的对象和属性,可以制造出非常丰富的颜色变化效果。

    详细情况见下表:

    对象或属性

    参数

    说明

    备注

    ColorEffect对象

    ByFromTo

    代表动画动作的一种颜色效果。

    简单的颜色变化

    不支持关键帧

    msoAnimColor

    FromTo

    更精细地控制对象颜色变化

    复杂的颜色变化

    支持关键帧

    msoAnimShapeFillBackColor

    FromTo

    改变背景填充色

    msoAnimShapeFillColor

    FromTo

    改变前景填充色

    msoAnimShapeLineColor

    FromTo

    改变线条色

    msoAnimShapeShadowColor

    FromTo

    改变阴影色

    msoAnimTextBulletColor

    FromTo

    改变文本项目符号色

    msoAnimTextFontColor

    FromTo

    改变字体色

    下面我们来做个红色滚动条动画。这个滚动条动画运用“属性”动作中的“msoAnimColor”属性,设置了三个关键点来表现颜色的变化。三个关键点的时间分配和值设置情况见下表:

    关键帧

    时间

    1

    00

    26367v

    2

    02

    6661119

    3

    10

    10996735

    动画效果图如下:

    源文件下载http://www.brsbox.com/filebox/down/fc/bdc0a8f4d755b7a2ab12ccb97602211b

  • 解密PowerPoint动画之缩放篇

    “缩放”是指在二维 x-y 坐标系内沿水平或垂直方向拉伸或收缩对象。

    您可以基于水平轴、垂直轴,或同时基于这两个轴更改对象的大小。如果缩放对象,至少需要指定其中一个绕其进行缩放的轴,同时还要指定希望针对该轴缩放的比例。

    “缩放”是PowerPoint预定义动画中用得比较多的一种效果,PowerPoint提供了一些对象或属性让我们可以自如地操纵对象的放大或缩小,下图列出了我们可以操控的对象或属性:

    scale001

    1)用ScaleEffect对象操纵缩放

    ScaleEffect对象提供了一种简单方式来对对象进行拉伸或收缩,它有几个重要的属性,通过指定这些属性的值,你可以随意地让对象沿水平或者垂直方向拉伸或收缩。下表是对其属性的详细说明。

    对象

    属性说明备注
    ScaleEffectByX按指定的屏幕宽度百分比水平缩放对象沿水平方向
    FromX 对象的初始宽度,其值以屏幕宽度的百分比形式表示
    ToX对象的最终宽度,其值以屏幕宽度的百分比形式表示
    ByY按指定的屏幕高度百分比水平缩放对象沿垂直方向
    FromY对象的初始高度,其值以屏幕宽度的百分比形式表示
    ToY对象的最终高度,其值以屏幕宽度的百分比形式表示

    注:上面六个属性值均为Single(单精度型)。

    下面我们来看看PowerPoint预定义动画“爆炸”的动作设置:

    scale002

    “爆炸”中共有7个动作,其中包含3个缩放动作。这7个动作在时间线上的安排如下:

    scale003

    三个缩放动作的属性值设置如下图:

    scale004

    2)利用对象的高度或宽度来操控缩放

    PowerPoint中,对象的“缩放”除了用ScaleEffect对象进行简单控制之外,还可以通过对象的高度和宽度进行更高级复杂的设置。PowerPoint动画对象模型中提供了SetEffectPropertyEffect来访问对象的宽度和高度。

    动作

    属性说明备注
    SetEffectProperty用于指定对象的属性,如对象的高度或宽度。不支持关键帧
    To用于给对象的属性赋值,它是一个变体数据类型。
    PropertyEffectProperty用于指定对象的属性,如对象的高度或宽度。支持关键帧
    From用于给对象的属性赋开始值,它是一个变体数据类型。
    To用于给对象的属性赋结束值,它是一个变体数据类型。

    一个非常棒的缩放效果: 
    scale005

    下载:
    http://www.brsbox.com/filebox/down/fc/8572c8abe781e0e50afe0bf52f9bc7dd

  • PowerPoint定义了一系列的对象转换效果,如百叶窗,溶解等,我把这些效果称为“滤镜”,它们被封装在一个叫做FilterEffect的对象中,通过访问FilterEffectType属性来指定一种转换效果,通过SubType来指定其转换方式或方向。详细说明见下表:

    动作

    属性说明
    FilterEffectType指定一种转换类型
    SubType指定一种转换方式或方向
    Reveal如何显示嵌入对象,是从对象中心向外显示还是从对象外边向中心显示。

    PowerPoint共内置了18种对象转换类型,大部分的转换类型都有可供选择的转换方式或方向,详细情况见下面的表格:

    序号

    滤镜类型方式或方向备注
    1劈裂水平向内、水平向外、垂直向内、垂直向外 
    2百叶窗水平、垂直 
    3盒状内、外 
    4棋盘跨越 、下 
    5圆形内、外 
    6菱形内、外 
    7溶解 
    8渐变 
    9图像PPT播放器不支持
    10像素PPT播放器不支持
    11十字形扩展内、外 
    12随机线条水平、垂直 
    13切入左、右、顶、底 
    14拉伸PPT播放器不支持
    15阶梯状左上、左下、右上、右下 
    16扇形展开 
    17轮子12348轮幅图案 
    18擦除左、右、顶、底 

    非常奇怪的是:PowerPoint虽然提供了“图像”、“拉伸”和“像素”三种转换效果,然而它们在PowerPoint中居然没有任何作用,只有把PPT另存为Html网页文件格式,我们才可以观察到它们非常炫人的效果。既然这三种转换在PPT中没有任何作用,微软为什么要在对象模型中提供呢,而且PowerPoint 2007中还赫然在列,实在是令人匪夷所思。

    一个非常出彩的图片像素转换效果,PPT网页格式:http://www.brsbox.com/filebox/down/fc/a53e37cb868a663037219a2345009224
    效果图

    filter001

     

    “滤镜”在PowerPoint动画中是古老的品种,属于模式动画,大家用得多,见得也多,已经不新鲜了。要想老树发新芽,必须配合其它的动作。下面是一个非常好的例子:

    模拟烟花效果:
    http://www.brsbox.com/filebox/down/fc/c882417987755b2880f24ae7f99621df
    效果图:

    filter002

    这个例子包含了以下一些动作,其中用到了一个滤镜效果(向外溶解)。

    clip_image002

  • 1)我的迷惑

    PowerPoint中,对象的旋转动作是在二维 x-y 坐标系内围绕对象的中心点顺时针或逆时针旋转指定的角度,让我迷惑不解的是:PowerPoint的旋转不能围绕一个指定的坐标点来旋转,因为它没有像sliverlight那样提供CenterX CenterY,所以就不能进行转换,我非常渴望在PowerPoint下一个版本中能加入这样的控制。为了改变对象的旋转支点,很多的朋友想出了一个折衷的方法:用另外一个不可见的形状与原始形状组合,从而隐性地来改变原始形状旋转的支点,如下面:

    rot001

    注:上图中淡点的图形是不可见的。

    另一个存在的问题是:PowerPoint中的旋转动作只能围绕Z轴旋转。更为奇怪是:微软的工程师为了弥补不能围绕XY轴旋转的问题,提供了一个预定义效果:旋转,它有两个选项:水平(绕Y轴)和垂直(绕X轴)。然而,我发现此旋转居然是假旋转,它不过是对象宽度和高度的变化,不信您看看下图:

    rot002

    这是垂直旋转,围绕X轴。

    rot003

    这是水平旋转,围绕Y轴。

    当我发现这些东西时非常沮丧。是什么原因让微软的工程师弄出这么个假旋转出来,它看起来是如此粗糙,不生动。尽管如此,我们只能接受,接受它所能给与的所有东西。我没有能力来改变,只能从这些可见的东西中寻找更合理的设置,尽可能地让它看起来更真实些。

    (二)真实的旋转

    PowerPoint中真实的旋转是“陀螺旋”,PowerPoint自定义动画工具提供了改变旋转度数的选项。

    下面我们来看看PowerPoint中“陀螺旋”动画的秘密,见下图:

    clip_image007

    从上图中我们可以看到“陀螺旋”由一个“旋转”动作组成,由By控制旋转度数,没有用到FromTo

    “旋转”动作由RotationEffect对象控制,有三个属性,其详细说明见下表:

    动作

    属性说明
    旋转By代表对象旋转的指定度数;例如,数值 180 表示对象旋转 180 度。可读写。
    From代表相对于屏幕(例如,90 度表示完全水平)指定的初始角度。可读写。
    To代表相对于屏幕所指定的对象的结束旋转角度(例如,90 度表示是完全水平的)。可读写。

    下表概括了如何将 FromTo By 属性一起使用或单独使用来确定动画的目标值。

    指定的属性

    说明
    From To 动画从 From 属性指定的值继续到 To 属性指定的值。
    From By 动画从 From 属性指定的值继续到 From By 属性之和所指定的值。
    To  动画从进行动画处理的属性的基值或前一动画的输出值继续到 To 属性指定的值。
    By  动画从正在进行动画处理的属性的基值或前一动画的输出值继续到该值与 By 属性指定的值之和。

    ByFromTo可以是一个正值或负值,均为Single类型值,正值表示顺时针,负值表示逆时针,如45.5表示顺时针旋转45.5度,-45.5表示逆时针旋转45.5度。

    “陀螺旋”只能改变旋转度数,不能指定从哪个角度开始旋转。

    “旋转”动作是一种简单的旋转,要处理更高级的旋转,PowerPoint在“属性”动作中提供了一个“旋转”属性,我们已经知道了“属性”动作是支持关键帧动画的,关键帧动画通过设置TimeValue来处理动画过程,因此我们可以处理更复杂一点的旋转。

    例如我们可以这样来处理一个对象的旋转

    关键帧

    TimeValue
    100
    20130
    302-15
    40390
    505-45
    607180
    710360

     

    下载PPT文件:

    http://www.brsbox.com/filebox/down/fc/f9db807b546447f4c1e4be3a5e48fd95

    (三)更合理的“假旋转”

    PowerPoint预定义效果中的“旋转”非常滑稽地使用对象的高度和宽度来模拟对象绕X轴和Y轴旋转,它做得非常丑陋。现实世界中,一个物体绕X轴旋转一周,应该是转第一次,正面变反面,转第二次,反面变正面。如果你细心地去观察预定义中的“旋转”,你会发现它实际上是转了3次,原本不真实的东西现在看起来就更不真实了。我只好自己动手进行改造,让这样的“假旋转”更合理一些。

    rot005

    下载PPT文件:

    http://www.brsbox.com/filebox/down/fc/00ca132c653a424e33ac2dbd302cb139
  • 由前面的知识,我们知道了PowerPoint不仅支持关键帧动画,而且还支持关键帧之间的内插值方法。动画的内插描述了动画在其持续时间内如何在各个值之间进行过渡。然而,令人失望的是,PowerPoint并没有提供用于设置内插的对象,它可能被深深隐藏了,不过,或许我们可以找到一种方法来解决这个难题,这只是我现在的一个遐想。虽然如此,但我还是忍不住用一个小节来专门阐述这个话题,尽管内插并不是一个新鲜的东西,便对于PowerPoint来说,它是神秘的。

    居我所知,PowerPoint至少支持二种以上类型的内插方法:线性、离散。我现在还没有发现PowerPoint支持样条内插,或许它是支持的,只是我的能力有限,还没有方法来检测。

    (1)线性内插(Liner

    线性内插在两个关键帧目标值之间采用自动补值的方式来产生平滑变化。

    clip_image002

    上图中采用关键帧来更改对象的颜色,有两个关键帧。我们假设整个动作的时间为1秒,关键帧1 0.5秒开始,目标值为红色,关键帧21.0秒开始,目标值为黄色。综合起来说就是对象的颜色从0.5秒开始,经过0.5秒由红色渐变成黄色。在红色与黄色之间会自动插入一些颜色值,如下:

    blog001

    看看一个线性内插的例子http://www.brsbox.com/filebox/down/fc/fe2706e62533f431c90e1a0767401d8d

    2)离散内插

    与线性内插相反,离散内插在两个关键帧之间不插入任何值,而是直接从关键帧1的目标值变化为关键帧2的目标值。如下图所示:

    blog002

    看看一个离散内插的例子

    http://www.brsbox.com/filebox/down/fc/90ce18c34c5ac84a5520f3a4d6be7831

    3)样条内插

    90%的可能性,PowerPoint目前是不支持样条内插的,也许在未来,随着PowerPoint引入更多的silverlight特性,它就支持了。样条内插可用于达到更现实的计时效果。由于动画通常用于模拟现实世界中发生的效果,因此您可能需要精确地控制对象的加速和减速,并且需要严格地对计时段进行操作。通过样条关键帧,您可以使用样条内插进行动画处理。