- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用3种办法实现3D旋转动画
使用3种办法实现3D旋转动画。
非常感谢术士提供代码和部分思路!
代码/术士 文章/Zaoeyo
纯VBA方法之一:2003版
在第一张幻灯片上画一个图形,然后立体化,利用一下语句实现3D旋转:(物体绕Y轴旋转225度后又回来)
Dim a As Slide
Dim b As Shape
Set a = ActivePresentation.Slides(1)
Set b = a.Shapes(1)
For i = 1 To 225
t1 = Timer
While Timer - t1 0.04
DoEvents
Wend
b.ThreeD.IncrementRotationY 0.4
Next
For i = 1 To 225
t1 = Timer
While Timer - t1 0.04
DoEvents
Wend
b.ThreeD.IncrementRotationY -0.4
Next
End Sub
VBA里面有个代码可以控制图形的InCameraRotation的数值,
顾名思义,In Camera Rotation的中文意思就是在摄像机镜头内的旋转,也就是三维旋转,其中InCameraRotationX n 代表绕X轴旋转n度
InCameraRotationY n 代表绕Y轴旋转n度
在PPT2003中,绕Z轴旋转的代码是InCameraRotation n
在PPT2007中,绕Z轴旋转的代码是InCameraRotationZ n
那么,我们可以将幻灯片中的某个图形执行这个代码,比如说第一个图形执行
InCameraRotationX 1,执行一次后,图形绕X轴旋转1度。
如果总是执行这个代码呢?图形旋转1度后又旋转1度,总是这样,不就形成了3D旋转吗?
为此,术士增加了一个循环语句:
For i=1 to 225,也就是从1循环到225度。但是电脑执行速度会非常快,我们根本看不到从1度到225的变化,也就是说,执行后,一瞬间,物体就从1变成了225度,所以为了解决这个难题,术士增加了一个While语句,设置一个计时器来控制每次循环的时间:
t1 = Timer
While Timer - t1 0.1
DoEvents
Wend
其中0.1是每隔多少秒旋转1度。时间越小,动画就会越连贯,推荐使用0.04秒。
那么这样就实现了3D旋转。基础代码如下
Dim a As Slide
Dim b As Shape
Set a = ActivePresentation.Slides(1)
Set b = a.Shapes(1)
For i = 1 To 225
t1 = Timer
While Timer - t1 0.1
DoEvents
Wend
b.ThreeD.IncrementRotationY 0.4
Next
End Sub
纯VBA方法二:2003版
VBA里面有个复制粘贴的代码,如果将原图形复制粘贴一份,并利用3D旋转的VBA代码旋转1次,再删除原图形,如此循环,那么就行成了3D旋转动画。
代码如下:(同样地,按方法一那样先在第一个幻灯片内化一个3D矩形)
Sub Duplicate()
Dim a As Slide
Dim b As Shape
Set a = ActivePresentation.Slides(1)
Set b = a.Shapes(1)
For i = 0 To 50
With b.Duplicate
.Top = 150
.ThreeD.IncrementRotationY i
t = Timer
While Timer - t 0.04
DoEvents
Wend
.Delete
End With
Next
End Sub
利用Duplicate复制粘贴代码实现
For i = 0 To 50 / 循环从0到50
With b.Duplicate / 执行b(上面定义b为第一张幻灯片的第一个图形)的复制粘贴
.Top = 150 / 在幻灯片页面150的高度处出现新复制粘贴的原图形
.ThreeD.IncrementRotationY i / 将原图形按Y轴旋转i度,也就是从0度到50度
t = Timer / 将t作为计时器
While Timer - t 0.04 / 设置时间为每隔0.04秒执行以上代码
DoEvents /必要代码
Wend /结束While语句
.Delete /删除原图形
End With /结束With语句
Next /结束For语句
方法三:VBA+自定义动画(2007版)
3D旋转的宏代码:sub 1()Ac
文档评论(0)