使用3种办法实现3D旋转动画.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档