-
2009-02-24
解密PowerPoint动画之颜色篇 - [PPT动画探索]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://pptaddins.blogbus.com/logs/35659572.html
“颜色”是对象的一个重要属性,现实世界中颜色的变化是无穷的,而计算机不过是模拟现实世界,颜色变化是有限的,其精度受计算机字长的影响。“颜色”是一门大学科,它融艺术、审美、心理等于一体。
在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对象
By、From、To
代表动画动作的一种颜色效果。
简单的颜色变化
不支持关键帧
msoAnimColor
From、To
更精细地控制对象颜色变化
复杂的颜色变化
支持关键帧
msoAnimShapeFillBackColor
From、To
改变背景填充色
msoAnimShapeFillColor
From、To
改变前景填充色
msoAnimShapeLineColor
From、To
改变线条色
msoAnimShapeShadowColor
From、To
改变阴影色
msoAnimTextBulletColor
From、To
改变文本项目符号色
msoAnimTextFontColor
From、To
改变字体色
下面我们来做个红色滚动条动画。这个滚动条动画运用“属性”动作中的“msoAnimColor”属性,设置了三个关键点来表现颜色的变化。三个关键点的时间分配和值设置情况见下表:
关键帧
时间
值
1
0.0
26367v
2
0.2
6661119
3
1.0
10996735

动画效果图如下:

源文件下载:http://www.brsbox.com/filebox/down/fc/bdc0a8f4d755b7a2ab12ccb97602211b
随机文章:
解密PowerPoint动画之缩放篇 2009-01-06解密PowerPoint动画之滤镜篇 2009-01-05揭密PowerPoint动画之旋转篇 2008-12-31解密PowerPoint动画之内插值篇 2008-12-30解密PowerPoint动画之动画类型篇 2008-12-29








评论
以为少少的VB6的经验,PPT里没有公开的对象模型,从VB6里面也没法访问啊。
你这两个软件都是用VBNet写的吧?
另外,我在Excelhome的博客也重新开张了,欢迎光临!
http://blog.excelhome.net/user1/hxhgxy/index.html
如果你觉得方便的话,建议你搬家到那里,因为那里容量大,站长和我比较熟,再大的容量应该也可以设置。
Dim slTemp As Slide
Dim shpTemp As Shape
Dim effNew As Effect
Dim bhvEff As AnimationBehavior
Dim aptNewPoint As AnimationPoint
Set slTemp = Application.ActivePresentation.Slides(2)
Set shpTemp = slTemp.Shapes("shpTest")
Set effNew = slTemp.TimeLine.MainSequence.AddEffect _
(Shape:=shpTemp, _
effectid:=msoAnimEffectCustom)
Set bhvEff = effNew.Behaviors.Add(msoAnimTypeProperty)
bhvEff.Timing.Duration = 1
With bhvEff.PropertyEffect
.Property = msoAnimColor
' .From = RGB(253, 234, 218)
' .To = RGB(228, 108, 10)
Set aptNewPoint = .Points.Add
With aptNewPoint
.Time = 0
.Value = RGB(253, 234, 218)
End With
Set aptNewPoint = .Points.Add
With aptNewPoint
.Time = 0.2
.Value = RGB(250, 192, 144)
End With
Set aptNewPoint = .Points.Add
With aptNewPoint
.Time = 1
.Value = RGB(228, 108, 10)
End With
End With
Set slTemp = Nothing
Set shpTemp = Nothing
Set effNew = Nothing
Set bhvEff = Nothing
Set aptNewPoint = Nothing
End Sub
这是我写的代码,动画效果非预期所要。
下面的代码也是我写的,试图分析你示例中最后一个图形的动画。我发现竟然有两个Behavior,第二个才是颜色动画。第一个未知。老乡,能否告知第一个behavior是什么?
Sub getAnimInfo()
Dim bhvTemp As AnimationBehavior
Dim effTemp As Effect
Dim ptTemp As AnimationPoint
Dim iPtCount As Integer
Dim i As Integer
Dim shpTemp As Shape
Set shpTemp = ActivePresentation.Slides(1).Shapes("Rectangle 72")
' MsgBox ActivePresentation.Name
Set effTemp = ActivePresentation.Slides(1). _
TimeLine.MainSequence. _
FindFirstAnimationFor(shpTemp)
MsgBox effTemp.Shape.Name
MsgBox effTemp.Behaviors.Count
Set bhvTemp = effTemp.Behaviors(2)
iPtCount = bhvTemp.PropertyEffect.Points.Count
For i = 1 To iPtCount
Set ptTemp = bhvTemp.PropertyEffect.Points(i)
With ptTemp
MsgBox .Time & "-" & .Value
End With
Next i
End Sub
那个未知,其实是形状的填充样式,这在PPT中是不公开的,没有办法通过正常的方式来访问。
用代码生成的当然更精确,更省力咯。
老乡,能否以此示例源码讲解更详细一些?
http://z11.invisionfree.com/pptheaven/index.php?showtopic=1360 这篇帖子不会是你发表的吧?
http://www.awesomebackgrounds.com/ss-fireworks.htm 这里的烟火效果是我见过最逼真的,老乡是否有兴趣模仿出来?
pptheaven上的那个贴子是我发的,介绍了一个烟花效果,到目前为止那个效果依然是PPT中最逼真的,现在很少上那里去了,因为感觉它一年不如一年。
awesomebackgrounds上的那个烟花是一个Gif,到目前为止用PPT本身的动画功能还难以达到那样的效果。除非也采用Gif的技术来做。