用VB制作动画时钟

Author: 何修华 Date: 2000年 第40期

  大家都知道在Win 9X的“日期/时间”属性中有一个直观漂亮的动画时钟,那么我们自己能不能也做一个呢?当然答案是肯定的。VB以简单实用而著称,下面就介绍用VB来制作动画时钟:
#1    1.如何画时钟表盘上的所有直线元素
  用Load命令建立原始Line控件的14个拷贝(因为表盘有12个点和时、分、秒共15个Line),该控件数组每一个实例的端点坐标属性设置为每条线在时钟表盘上的适当位置。这些拷贝中大多数只放置一次,而3个Line控件每秒钟更新一次,产生时钟指针移动的感觉。
  注意:在应用程序代码中并没有直接擦除任何一条线。当我们改变每一个Line控制的端点时,每一根针在移动时擦除和重画的所有技术工作都由VB来处理。
#1    2.如何修改时针的形状
  通过调整代码中的属性设置,可以改变时钟的形状。例如:通过改变每一个Line控制的Borderwidth属性设置,可以建立更细或更粗的线。
#1    3.计时器的Interval属性设置
  计时器的Interval属性设置为10,即为1/100秒。
#1    4.程序的编写与执行
    (1)新建工程
  先新建一个工程(工程类型为标准EXE),然后用“工具箱”中的工具加入一个timer1(计时器)和Line1(直线),其index(指针)分别设置为空和0。然后双击Form1窗体,输入源代码。
    (2)程序源代码
  DefDbl A-Z
  Private Sub Form_Load()
  timer1.Interval=100
  Width=4000
  Height=4000
  Left=Screen.Width\2-2000
  Top=(Screen.Height-Height)\2
  End Sub
  Private Sub Form_Resize()
  Dim i, Angle
    Static flag As Boolean
  If flag=False Then
  flag=True
  For i=0 To 14
  ′画出表盘12个点和时、分、秒共15个Line
  If i>0 Then Load Line1(i)
  Line1(i).Visible=True
  Line1(i).BorderWidth=5
  Line1(i).BorderColor=RGB(0, 128, 0) ′设置Line的粗细和颜色
  Next i
  End If
  For i=0 To 14
  Scale (-1, 1)-(1, -1)
  Angle=i * 2 * Atn(1)/3
  Line1(i).X1=0.9 * Cos(Angle)
  Line1(i).Y1=0.9 * Sin(Angle)
  Line1(i).X2=Cos(Angle)
  Line1(i).Y2=Sin(Angle)
  Next i
  End Sub
  Private Sub timer1_Timer()
  Const HH=0
  Const MH=13
  Const SH=14
  Dim Angle
  Static LS
  If Second(Now)=LS Then Exit Sub
  LS=Second(Now)
  Angle=0.5236 * (15-(Hour(Now)+Minute(Now)/60)) ′设置时针
  Line1(HH).X1=0
  Line1(HH).Y1=0
  Line1(HH).X2=0.3 * Cos(Angle)
  Line1(HH).Y2=0.3 * Sin(Angle)
  Angle=0.1047 * (75-(Minute(Now)+Second(Now)/60)) ′设置分针
  Line1(MH).X1=0
  Line1(MH).Y1=0
  Line1(MH).X2=0.7 * Cos(Angle)
  Line1(MH).Y2=0.7 * Sin(Angle)
  Angle=0.5236 * (75-Second(Now))
  ′设置秒针
  Line1(SH).X1=0
  Line1(SH).Y1=0
  Line1(SH).X2=0.8 * Cos(Angle)
  Line1(SH).Y2=0.8 * Sin(Angle)
  form1.Caption=Str(date+ time())
  ′窗口显示精确的日期和数字化的时间
  End Sub
    (3)程序的编译和执行
  点击VB“运行”菜单中的“启动”或“全面编译”命令,即可对程序编译并运行!
  注:上述程序在中文Windows 98和VB 6.0中文企业版下调试通过。