您现在的位置: 主页 > 香港559808论坛 >

香港559808论坛

IT之家学院 午夜12点的守候PPT打造“IT之家电视台

发表时间:2019-06-18

  大概很早以前,每天深夜或者周二下午,打开电视都会看到这样类似下图的画面。这种画面被称为测试图,也叫测试卡,是电视台在正式节目之前播放的供用户校验电视图像的画面,而电视台也通常在这个间隙对设备进行维护。而如今越来越多的电视台加入了24小时播出的行列,因此观众看到测试图的机会就越来越少了。

  今天我们就来虚拟一张“IT之家电视台”的测试图。用到的软件,PowerPoint就够了。

  1、先从网上找到空白(即不含台标、报时等信息)的测试图大图,并将其设置为幻灯片的背景,再在合适的位置上加上台标、电视台信息、主报时和右上角角标报时,并应用上美观的格式。做完以后,就像下图。

  这就完成了吗?当然不是,那就没必要写一篇文章了。现在的幻灯片还是静态的,我们可要让它动起来,让报时器变成名副其实的报时器。于是VBA就登场了。

  2、启动VBA编辑器(该编辑器的入口在“开发工具”选项卡下。该选项卡默认隐藏,可以在功能区设置中取消隐藏),从“插入”菜单中新建一个标准模块。

  代码说明:文本框和形状等本质上是属于shape类型的,在一张幻灯片上添加的shape可以通过其下的shapes集合来访问。在本例中,shapes(3)表示主报时的日期部分,shapes(4)表示主报时的时间部分,shapes(5)则表示右上角的角标报时。所以上述代码的作用是刷新一次报时器。

  3、刷新报时器的代码是写完了,但是无论你进行什么操作,这段代码都不会运行,因为没有触发条件。而我们希望在启动幻灯片放映后,执行该代码。于是便引入了一个能够自动运动的宏OnSlideShowPageChange。如若把过程命名为该名称,则它所包含的代码会在放映时幻灯片切换时被执行——其实并不是启动时执行,但是因为现在只有一张幻灯片,所以可以大致等效。本港台开奖现场报码室,于是就有了这样的代码:

  然后启动幻灯片放映,发现时间确实被刷新了!但是,好像哪里不对劲。时间刷新了一次后,它就不走了。于是我们应该来个定时器之类的控件,让Tick过程能每秒执行一次。然而,VBA并不像VB6.0一样提供定时器控件。

  4、这并不意味着我们就束手无策了。既然没有定时器控件,那就不用控件来实现呗。我们仍可以通过Windows API来实现定时器的功能,先声明API函数:

  代码说明:SetTimer和KillTimer是相反的,前者是设置计时器(开始计时),后者是取消计时器(停止计时)。它们的参数中,hwnd是窗口的句柄(类似于ID),nIDEvent是计时器的ID,uElapse是计时间隔(以毫秒为单位),lpTimerFunc是要让计时器执行的函数或者过程。而因为参数中还要求句柄,那么需要再来一个函数来获取活动窗体的句柄。

  再次启动幻灯片放映,我们发现时间真的一秒一下地走起来了!(文末会上效果图)但是注意到角标报时一直悬挂在右上角,而通常电视台只会在半点和整点时显示角标报时。有什么办法可以做到这点呢?当然有!

  代码说明:time是date类型,转成double表示的当前时间占全天的比值。比如12:00:00正好时一天的正中,因此表示12:00:00的date转换为double后正好是0.5。那么可以再乘上一天的总秒数86400秒,来表示是一天中的第几秒,再根据除以1800秒(半个小时是1800秒)所得的余数,即可判断是否到半点或整点了。余数1770表示XX:29:30或XX:59:30,余数30表示XX:30:30或XX:00:30。

  7、接着我们把表示角标报时的shapes(5)的visible(是否可见)属性与该函数的返回值绑定在一起。在Tick过程的With块中,新增一行:

  这样任务就基本完成了。另外,我们还希望能在退出幻灯片放映后能够停止计时,能重置报时器等,于是就引入了OnSlideShowTerminate(在放映结束时自动运行)和Reset(尚未定义触发条件)过程:

  更多设想:为了丰富测试图的内容,大家还可以加入背景音乐;当然也可以把“IT之家电视台”再办下去,让它开播等等。


香港正版四不像图片| 香港最快开奖现场直播| 香港跑狗图| www.80332.com| www.42828a.com| 1183439.com| 神算子| 新加坡六合| 内部一肖一码| www.899855.com| www.85443.com| 白姐全文|