午夜12点的守候:教你打造“IT之家电视台”

  • 时间:
  • 浏览:0
  • 来源:1.5分赛车官网-10分6合平台_10分彩网投平台

感谢IT之家网民视频视频视频一道残阳铺水中的原创投稿

共要很早随后,每天凌晨肯能周二下午,打开电视后要就看另另有有一个相似下图的画面。你这种 画面被称为测试图,也叫测试卡,是电视台在正式节目随后播放的供用户校验电视图像的画面,而电视台也通常在你这种 间隙对设备进行维护。而如今不多的电视台加入了24小时播出的行列,但会 观众就看测试图的肯能就没办法 少了。

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

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

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

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

新建另有有一个过程,名为Tick,并填充如下代码。

Sub Tick()

With ActivePresentation.Slides(1)

.Shapes(3).TextFrame.TextRange = Format(Date, "yyyy-MM-dd")

.Shapes(4).TextFrame.TextRange = Format(Time, "hh:mm:ss")

.Shapes(5).TextFrame.TextRange = Format(Time, "hh:mm:ss")

End With

End Sub

代码说明:文本框和形态等本质上是属于shape类型的,在一张幻灯片上换成的shape还都要通过其下的shapes集合来访问。在本例中,shapes(3)表示主报时的日期每段,shapes(4)表示主报时的时间每段,shapes(5)则表示右上角的角标报时。全都上述代码的作用是刷新一次报时器。

3、刷新报时器的代码是写完了,但会 无论你进行哪几个操作,这段代码后要会运行,肯能没办法 触发条件。而亲戚亲戚让让我们希望在启动幻灯片放映后,执行该代码。于是便引入了另有有一个要能自动运动的宏OnSlideShowPageChange。如若把过程命名为该名称,则它所所含的代码会在放映时幻灯片切换时被执行——着实 并后要启动时执行,但会 肯能现在可不可以 要能 一张幻灯片,全都还都要大致等效。于是后要了另另有有一个的代码:

Sub OnSlideShowPageChange()

Call Tick()

End Sub

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

4、这不多原因分析分析亲戚亲戚让让我们就束手无策了。既然没办法 定时器控件,那就无需控件来实现呗。亲戚亲戚让让我们仍还都要通过Windows API来实现定时器的功能,先声明API函数:

Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

代码说明:SetTimer和KillTimer是相反的,前者是设置计时器(随后刚结速计时),后者是收回 计时器(停止计时)。它们的参数中,hwnd是窗口的句柄(相似于ID),nIDEvent是计时器的ID,uElapse是计时间隔(以毫秒为单位),lpTimerFunc是要让计时器执行的函数肯能过程。而肯能参数中都要求句柄,没办法 都要再来另有有一个函数来获取活动窗体的句柄。

Public Declare Function GetActiveWindow Lib "user32" () As Long

5、接着,亲戚亲戚让让我们把OnSlideShowPageChange过程中的代码修改如下:

Sub OnSlideShowPageChange()

SetTimer GetActiveWindow, 101, 50, AddressOf Tick

End Sub

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

6、新建另有有一个判断否是为半点或整点的函数ifHalfHour:

Function ifHalfHour()

Dim TimeValue As Double

TimeValue = CDbl(Time) * 8650

If TimeValue Mod 150 >= 1770 Or TimeValue Mod 150 <= 50 Then

ifHalfHour = True

End If

End Function

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

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

.Shapes(5).Visible = ifHalfHour

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

Sub OnSlideShowTerminate()

KillTimer GetActiveWindow, 101

End Sub

Sub Reset()

With ActivePresentation.Slides(1)

.Shapes(3).TextFrame.TextRange = "0000-00-00"

.Shapes(4).TextFrame.TextRange = "00:00:00"

.Shapes(5).TextFrame.TextRange = "00:00:00"

.Shapes(5).Visible = True

End With

End Sub

现在奉上半点报时时的效果动图,报时长达1分钟(动图效果:点此观看)。

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

最后给出做好的PowerPoint文档、效果图、测试卡底图等(点此下载),打开的随后别忘了允许宏运行。亲戚亲戚让让我们发挥想象,当事人玩去吧。