VB设计有语音报时和报警功能的闹钟(4)

2008-04-09 04:44:42来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



 Line(Form1.ScaleHeight/2,Form1.ScaleHeight/2)-(x,y),QBColor ( 1 )

 huamiao = a - 1

End Function

Private Sub Timer1 _ Timer ( )

 mz =Second(time)
 mz =60–mz ‘因为三角函数中,角度的变化方向,正好与钟表的方向相反,

 ‘所以60减去就相当于将角度变为负值,也就是说,和原来的角度增长方向正好相反,与钟表的增长方向相同。

 mz = huamiao ( mz )

End Sub
  下面是运行效果:



  好了,现在我们可以加上,分针和时针了.下面是源代码和运行结果:

' = = = = = = = = = = = = = = = = = = = = = =
' 以下语句能画出表盘
‘ 六十个点表示六十个刻度,
' = = = = = = = = = = = = = = = = = = = = = =

Private Sub huayuan ( )
 Dim x As Double
 Dim y As Double

 For i = 0 To 60
  x = ( 1 – Sin ( i / 60 * 2 * 3.1415926 ) ) * ( Form1.ScaleHeight / 2 – 100 ) 100
  y = ( 1 – Cos ( i / 60 * 2 * 3.1415926 ) ) * ( Form1.ScaleHeight / 2 – 100 ) 100
  PSet ( x , y ) , QBColor ( 12 )
 Next i
End Sub

‘ = = = = = = = = = = = = = = = = = = = = = = = = = =

‘下面代码作用是画出时针走的路线

‘时针是12个刻度,表示是12个钟点

‘ = = = = = = = = = = = = = = = = = = = = = = = = = =

Private Function xianshishi ( a As Integer )

 '抹除前一次画的线

 x = (1–Sin((a 1)/12*2*3.1415926)) * ( Form1.ScaleHeight/2–800) 800
 y = (1–Cos((a 1)/12*2*3.1415926)) * ( Form1.ScaleHeight/2–800) 800

 Line (Form1.ScaleHeight/2,Form1.ScaleHeight/2)-(x,y),QBColor(7)

 '开始画後一秒的线

 x = (1–Sin(a/12*2*3.1415926))*(Form1.ScaleHeight/2–800) 800
 y = (1–Cos(a/12*2*3.1415926))*(Form1.ScaleHeight/2–800) 800

 Line (Form1.ScaleHeight/2,Form1.ScaleHeight/2)-(x,y),QBColor ( 1 )
 xianshishi=a-1
End Function

‘ = = = = = = = = = = = = = = = = = = = = = = = = = =

‘下面代码作用是画出秒针走的路线

‘秒针是六十个刻度,表示是六十个秒点

‘ = = = = = = = = = = = = = = = = = = = = = = = = = =

 Private Function xianshimiao ( a As Integer )

 '抹除前一次画的线

 x =(1–Sin((a 1)/59*2*3.1415926))*(Form1.ScaleHeight/2–200) 200
 y =(1–Cos((a 1)/60*2*3.1415926))*(Form1.ScaleHeight/2–200) 200

 Line(Form1.ScaleHeight/2,Form1.ScaleHeight/2)-(x,y),QBColor(7)

 '开始画後一秒的线

 x = (1–Sin(a/59*2*3.1415926))*(Form1.ScaleHeight/2–200) 200
 y = (1–Cos(a/60*2*3.1415926))*(Form1.ScaleHeight/2–200) 200

 Line ( Form1.ScaleHeight/2 ,Form1.ScaleHeight/2)-(x,y),QBColor(1)
 xianshimiao = a - 1
End Function

 ‘ = = = = = = = = = = = = = = = = = = = = = = = = = =

 ‘下面代码作用是画出分针走的路线

 ‘分针是六十个刻度,表示是六十个分点

 ‘ = = = = = = = = = = = = = = = = = = = = = = = = = =

Private Function xianshifen ( a As Integer )

 '抹除前一次画的线

 x =(1–Sin((a 1)/59 * 2 * 3.1415926)) * ( Form1.ScaleHeight/2–400) 400
 y =(1–Cos((a 1)/60 * 2 * 3.1415926)) * ( Form1.ScaleHeight/2–400) 400

 Line (Form1.ScaleHeight/2,Form1.ScaleHeight/2)-(x,y),QBColor(7)

 '开始画後一秒的线

 x =(1–Sin(a/59*2*3.1415926)) * (Form1.ScaleHeight/2–400) 400
 y =(1–Cos(a/60*2*3.1415926)) * (Form1.ScaleHeight/2–400) 400

 Line (Form1.ScaleHeight/2, Form1.ScaleHeight/2)-(x,y),QBColor(1)

 xianshifen = a - 1

End Function

‘ = = = = = = = = = = = = = = = = = = = = = = = =

‘ 每秒钟触发一次此事件,从而获取当时的时间,并调用相应的函数,画出三个针的位置

‘ = = = = = = = = = = = = = = = = = = = = = = = =

Private Sub Timer1 _ Timer ( )

 miao = Second (time)
 miao = 60 – miao
 fen = Minute (time)
 fen = 60 - fen
 shi = Hour (time)

 If shi > = 12 Then ‘因为一天之内时针要走二十四个钟头,也就是要走两圈,所以将下午和晚上的时间减去十二,就可以确定时针准确的位置

  shi = shi - 12

 End If

 shi = 12 - shi
 miao = xianshimiao ( miao )
 fen = xianshifen ( fen )
 shi = xianshishi ( shi )

End Sub

‘ = = = = = = = = = = = = = = = =

‘此事件,在窗体最初载入时触发,主要作用是画出表盘和刻度

‘ = = = = = = = = = = = = = = = =

Private Sub Form _ Load ( )

 Form1.Width = Form1.Height-250
 Huayuan ‘画刻度
 Form1.Circle(Form1.ScaleHeight/2,Form1.ScaleHeight/2),Form1.ScaleHeight/2-30

End Sub
  运行效果如下图所示:


  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用VB6.0编程禁止网上下载文件

下一篇:VB MapX编程实现地图数据查询