注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天津劳技

博主:刘瑞祥(来自天津市南开区实验学校)

 
 
 

日志

 
 

(原创教程)例谈ppt之精确地绘制图形——抛物线、烧杯  

2015-01-25 13:54:12|  分类: 教育技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

南开区实验学校 刘瑞祥

  说明:从本例开始,将介绍vba在ppt中的应用,部分例子实际上只是利用vba来设置,只要在放映前执行一遍程序以后,就可以把程序删了。注意,vba决不是ppt的必要组成部分,凡是在放映时才执行的程序,说明ppt本身功能不足以实现这么“高级”的效果,最好是用其它软件(比如flash)制作以后嵌入进来。

另:1、关于怎样打开vba环境,请参见ppt制作技术之媒体(单击这里可跳转)一文中的第三部分“Flash”部分;

  2、从Office2007开始,Powerpoint取消了录制宏的方法,编写程序变得非常困难,网络上的文章往往只给示例不做讲解,本系列尽量予以解释和举例。

例十一:精确地绘制图形——抛物线、烧杯(本程序执行完一次后可以删掉)。

 1、在“开发工具”里单击“Visual Basic”按钮,进入开发环境,单击下图画圈部分,新建一个模块。

(原创教程)例谈制作交互性更强的ppt课件(十) - 刘老师 - 天津劳技

 2、输入如下代码,运行后可以得到一条抛物线:

Public Sub d1() Dim a(0 To 100, 1 To 2) As Single, i As Integer For i = 0 To 100 a(i, 1) = cm2p(i / 10) + cm2p(6): a(i, 2) = cm2p(i * i / 1000) + cm2p(5) Next ActivePresentation.Slides(1).Shapes.AddPolyline SafeArrayOfPoints:=a End Sub

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、要实现空心图效果,比如下面的样子,相应的代码为:

(原创教程)例谈制作交互性更强的ppt课件(十一) - 刘老师 - 天津劳技

Public Sub d3() Dim a(0 To 9, 1 To 2) As Single, i As Integer, shp1 As Shape a(0, 1) = 0: a(0, 2) = 0: a(1, 1) = cm2p(9): a(1, 2) = 0 a(2, 1) = cm2p(9): a(2, 2) = cm2p(9): a(3, 1) = 0: a(3, 2) = cm2p(9) a(4, 1) = 0: a(4, 2) = 0: a(5, 1) = cm2p(3): a(5, 2) = cm2p(3) a(6, 1) = cm2p(6): a(6, 2) = cm2p(3): a(7, 1) = cm2p(6): a(7, 2) = cm2p(6) a(8, 1) = cm2p(3): a(8, 2) = cm2p(6): a(9, 1) = cm2p(3): a(9, 2) = cm2p(3) Set shp1 = ActivePresentation.Slides(1).Shapes.AddPolyline(SafeArrayOfPoints:=a) shp1.Line.Weight = 1: shp1.Line.Visible = msoFalse: shp1.Fill.ForeColor.RGB = RGB(204, 204, 204) End Sub

  以上的多边形,外面一圈五个点(第五个点与第一个点相同),接着里面一圈的五个点(第五个点与第一个点相同)共十个点组成坐标数组。然后把边框设为无色,填充色设为任意一种颜色。要使上面的空心矩形有边框,千万不能直接设置边框色,那样会出现一条连接内部和外部的斜线。正确的做法是,在上面的空心矩形上再画相应的矩形框。

  我们可以用类似的空心图形实现字幕,以及各种窗口效果。注意,只能用addPolyLine或者addCurve来实现空心效果,而不能用其它函数。

  评论这张
 
阅读(8562)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018