南开区实验学校 刘瑞祥
说明:从本例开始,将介绍vba在ppt中的应用,部分例子实际上只是利用vba来设置,只要在放映前执行一遍程序以后,就可以把程序删了。注意,vba决不是ppt的必要组成部分,凡是在放映时才执行的程序,说明ppt本身功能不足以实现这么“高级”的效果,最好是用其它软件(比如flash)制作以后嵌入进来。
另:1、关于怎样打开vba环境,请参见ppt制作技术之媒体(单击这里可跳转)一文中的第三部分“Flash”部分;
2、从Office2007开始,Powerpoint取消了录制宏的方法,编写程序变得非常困难,网络上的文章往往只给示例不做讲解,本系列尽量予以解释和举例。
例十一:精确地绘制图形——抛物线、烧杯(本程序执行完一次后可以删掉)。
1、在“开发工具”里单击“Visual Basic”按钮,进入开发环境,单击下图画圈部分,新建一个模块。
2、输入如下代码,运行后可以得到一条抛物线:
|
Private Function cm2p(cm As Single) As Single cm2p = cm * 28.35 End Function |
前一段程序是画抛物线的主要程序,通过100段小直线进行模拟,后一段函数是把厘米单位转化为磅(下面及本系列后面代码均略去这三行)。其中ActivePresentation.Slides(1).Shapes.AddPolyline是在活动窗口的第一张幻灯片上绘制多边形,后面跟着的数组a是多边形顶点坐标。如果数组的最后一项与第一项对应相同,则是闭合的多边形,否则为折线。
虽然Shapes对象有addCurve方法可以绘制光滑曲线,但计算方法比较复杂,不如直接用折线段绘制。
3、输入如下代码,运行后先画一个烧杯,名字为s1,无色透明填充、边框宽1、黑色,再画一条黑色横线代表液面,宽度1,名字s2,最后用两个对象的名字组成一个数组,把对象组合起来:
Public Sub d2() Dim a(0 To 8, 1 To 2) As Single, i As Integer, shp1 As Shape, shp2 As Shape a(0, 1) = 0: a(0, 2) = 0: a(1, 1) = cm2p(2): a(1, 2) = 0 a(2, 1) = cm2p(2.2): a(2, 2) = cm2p(0.2): a(3, 1) = cm2p(2): a(3, 2) = cm2p(0.4) a(4, 1) = cm2p(2): a(4, 2) = cm2p(1.8): a(5, 1) = cm2p(1.8): a(5, 2) = cm2p(2) a(6, 1) = cm2p(0.2): a(6, 2) = cm2p(2): a(7, 1) = 0: a(7, 2) = cm2p(1.8) a(8, 1) = 0: a(8, 2) = 0 Set shp1 = ActivePresentation.Slides(1).Shapes.AddPolyline(SafeArrayOfPoints:=a) shp1.Name = "s1": shp1.Line.Weight = 1: shp1.Line.ForeColor.RGB = 0: shp1.Fill.Visible = msoFalse Set shp2 = ActivePresentation.Slides(1).Shapes.AddLine(0,cm2p(1),cm2p(2),cm2p(1)) shp2.Name = "s2" ActivePresentation.Slides(1).Shapes.Range(Array("s1","s2")).Group End Sub |
4、要实现空心图效果,比如下面的样子,相应的代码为:
|
以上的多边形,外面一圈五个点(第五个点与第一个点相同),接着里面一圈的五个点(第五个点与第一个点相同)共十个点组成坐标数组。然后把边框设为无色,填充色设为任意一种颜色。要使上面的空心矩形有边框,千万不能直接设置边框色,那样会出现一条连接内部和外部的斜线。正确的做法是,在上面的空心矩形上再画相应的矩形框。
我们可以用类似的空心图形实现字幕,以及各种窗口效果。注意,只能用addPolyLine或者addCurve来实现空心效果,而不能用其它函数。
评论