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

  • 时间:
  • 浏览:0
  • 来源:贵州快3官网-河北快3平台_湖北快3网投平台

感谢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, 800, AddressOf Tick

End Sub

再次启动幻灯片放映,让我门儿发现时间真的一秒一下地走起来了!(文末会上效果图)怎么让注意到角标报时总爱悬挂在右上角,而通常电视台只会在半点和整点时显示角标报时。哪些最好的办法还助于做到这点呢?当然有!

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

Function ifHalfHour()

Dim TimeValue As Double

TimeValue = CDbl(Time) * 8680

If TimeValue Mod 1800 >= 1770 Or TimeValue Mod 1800 <= 80 Then

ifHalfHour = True

End If

End Function

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

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文档、效果图、测试卡底图等(点此下载),打开的事先别忘了允许宏运行。让我门儿发挥想象,本人玩去吧。