|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
'PPT设置动画对象绕指定点旋转
' 第一种方法
' 1.插入你需要的形状,设置好图形的样式(这里以三角形为例)
' 2.复制一个形状,这样你会有两个一模一样的形状。把其中一个水平翻转,上下翻转,拖到一起。
' 3.按住shift键分别选中这两个图形,在上面点击右键,在弹出的菜单中选中“组合”。
' 4.这样,两个图形就组合成为了一个图形,其中心点也改变为两个图形的对称点。
' 5.把其中一个图形的填充设置为“无填充”,线条设置为“无线条”,也就是让它透明。
' 至此“大功告成”,看起来中心点已经改变了。后面你自己设置动画就行了。
'
' 第二种方法
' 1.这种方法俗称“添圆法”。就是在原来已有图形的基础上添加一个圆,还是通过组合来改变图形中心的位置。下面以三角形为例。
' 2.单击“插入”选项卡,在“插图”组中单击“形状”按钮,在打开的形状面板中选择“基本形状”中的“椭圆”。
' 3.同时按着shift和Ctrl键,按鼠标左键在A点处向外拖动,绘制出一个覆盖三角形的以A点为圆心的正圆。
' 4.同时选中三角形和绘制的覆盖三角形的正圆,把它们组合起来。
' 5.选中组合图形中的圆形,设置“无轮廓”“无填充”。
' 其它和刚才讲的第一种方法一样了?
Sub 添圆法设置旋转中心点()
Dim sld As slide, shpSquare As Shape, shpCircle As Shape
Dim left As Single, top As Single, sideLength As Single
Dim centerX As Single, centerY As Single
' 指定旋转中心点
'中间点:x=left+sideLength/2=150,y=top+sideLength/2=150;
'左上角:x=left=100,y=top=100;
'右上角:x=left+sideLength=200,y=top=100;
'左下角:x=left=100,y=top+sideLength=200;
'右下角:x=left+sideLength=200,y=top+sideLength=200;
centerX = 100 ' 指定中心点X坐标//左上角
centerY = 100 ' 指定中心点Y坐标
' 设置幻灯片和正方形的参数
Set sld = ActivePresentation.Slides(1)
sideLength = 100 ' 磅
left = 100 ' 起始X坐标
top = 100 ' 起始Y坐标
' 添加正方形
Set shpSquare = sld.Shapes.AddShape( _
msoShapeRectangle, left, top, sideLength, sideLength)
' 添加圆形//辅助形状
Set shpCircle = sld.Shapes.AddShape( _
msoShapeOval, left, top, sideLength * 2, sideLength * 2)
' 设置圆形属性
With shpCircle
' 这里使用白色,或根据背景设置相应颜色
.Fill.ForeColor.RGB = RGB(255, 255, 255)
.Fill.BackColor.RGB = RGB(255, 255, 255)
.Line.Visible = False ' 无轮廓线
.ZOrder msoSendToBack ' 置于底层
End With
' 将辅助形状的中心点移动到指定的旋转中心
offsetX = centerX - (shpSquare.left + shpSquare.Width)
offsetY = centerY - (shpSquare.top + shpSquare.Height)
shpCircle.left = shpCircle.left + offsetX
shpCircle.top = shpCircle.top + offsetY
' 将原始形状组合到辅助形状上
Set groupShape = ActivePresentation.Slides(1).Shapes.Range( _
Array(shpCircle.Name, shpSquare.Name)).Group
' 将组合形状移动到辅助形状的位置,以便它们共享相同的中心点
groupShape.left = shpCircle.left - (groupShape.Width - shpCircle.Width) / 2
groupShape.top = shpCircle.top - (groupShape.Height - shpCircle.Height) / 2
' ' 解组合形状并删除辅助形状
' 'groupShape.Ungroup
' 'shpCircle.Delete
End Sub
|
|