
怎么用VB来制作时钟?
2个回答
展开全部
'一个Timer控件
'效果为一个标准石英钟
Dim a As Integer, b As Integer, rad As Double
Private Sub Form_Load()
a = Me.ScaleWidth \ 2 '圆心X坐标
b = Me.ScaleHeight \ 2 '圆心Y坐标
rad = Atn(1) / 45 '1角度的弧度数
Me.DrawWidth = 2
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Dim angle1 As Double, angle2 As Double, angle3 As Double
angle1 = ((Hour(Now) Mod 12) * 30 + Minute(Now) / 2 - 90) * rad '时针的角度
angle2 = (Minute(Now) * 6 + Second(Now) / 10 - 90) * rad '分针的角度
angle3 = (Second(Now) * 6 - 90) * rad '秒针的角度
Cls '清除画面,以便画下一秒的状态
Me.Circle (a, b), 720 '画石英钟轮廓
For i = 1 To 12
Me.CurrentX = a - IIf(i < 7, 115, 170) + 600 * Cos((i * 30 - 90) * rad) '刻度X坐标
Me.CurrentY = b - 90 + 600 * Sin((i * 30 - 90) * rad) '刻度Y坐标
Print i '画刻度
Next
Me.Line (a, b)-(a + 300 * Cos(angle1), b + 250 * Sin(angle1)), vbBlue '画时针
Me.Line (a, b)-(a + 400 * Cos(angle2), b + 550 * Sin(angle2)), vbBlue '画分针
Me.Line (a, b)-(a + 600 * Cos(angle3), b + 600 * Sin(angle3)), vbRed '画秒针
End Sub
'效果为一个标准石英钟
Dim a As Integer, b As Integer, rad As Double
Private Sub Form_Load()
a = Me.ScaleWidth \ 2 '圆心X坐标
b = Me.ScaleHeight \ 2 '圆心Y坐标
rad = Atn(1) / 45 '1角度的弧度数
Me.DrawWidth = 2
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Dim angle1 As Double, angle2 As Double, angle3 As Double
angle1 = ((Hour(Now) Mod 12) * 30 + Minute(Now) / 2 - 90) * rad '时针的角度
angle2 = (Minute(Now) * 6 + Second(Now) / 10 - 90) * rad '分针的角度
angle3 = (Second(Now) * 6 - 90) * rad '秒针的角度
Cls '清除画面,以便画下一秒的状态
Me.Circle (a, b), 720 '画石英钟轮廓
For i = 1 To 12
Me.CurrentX = a - IIf(i < 7, 115, 170) + 600 * Cos((i * 30 - 90) * rad) '刻度X坐标
Me.CurrentY = b - 90 + 600 * Sin((i * 30 - 90) * rad) '刻度Y坐标
Print i '画刻度
Next
Me.Line (a, b)-(a + 300 * Cos(angle1), b + 250 * Sin(angle1)), vbBlue '画时针
Me.Line (a, b)-(a + 400 * Cos(angle2), b + 550 * Sin(angle2)), vbBlue '画分针
Me.Line (a, b)-(a + 600 * Cos(angle3), b + 600 * Sin(angle3)), vbRed '画秒针
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'只要在窗体上添加一个计时器,添加如下代码
Const PI = 3.1415926
Private Sub Form_Load()
Scale (-100, 100)-(100, -100)
Timer1.Interval = 1000
Form1.BackColor = &HFFFFFF
Timer1_Timer
Form1.Show
Form1.Refresh
Call Timer1_Timer
End Sub
Private Sub Form_Paint()
Call MyDraw
End Sub
Public Sub MyDraw()
Cls
Scale (-100, 100)-(100, -100)
For i = 0 To 2 * PI Step PI / 30
Form1.DrawWidth = 3
PSet (60 * Cos(-i), 60 * Sin(-i)), vbGreen
Next i
For i = 0 To 2 * PI Step PI / 6
Form1.DrawWidth = 6
PSet (60 * Cos(-i), 60 * Sin(-i)), vbRed
Next i
End Sub
Private Sub Form_Resize()
Form1.Refresh
End Sub
Private Sub Timer1_Timer()
Form1.Refresh
Form1.Caption = Time
s = Second(Time) * PI / 30
DrawWidth = 2
Line (0, 0)-(55 * Cos(-Second(Time) * (PI / 30) + PI / 2), 55 * Sin(-Second(Time) * (PI / 30) + PI / 2)), vbBlue
m = Minute(Time)
m1 = (m + s / 60) * (PI / 30) - PI / 2
DrawWidth = 3
Line (0, 0)-(45 * Cos(-m1), 45 * Sin(-m1)), vbBlack
h = Hour(Time)
h1 = (h + (m * 60 + s) / 3600) * PI / 6 - PI / 2
DrawWidth = 3.5
Line (0, 0)-(25 * Cos(-h1), 35 * Sin(-h1)), vbGreen
End Sub
Const PI = 3.1415926
Private Sub Form_Load()
Scale (-100, 100)-(100, -100)
Timer1.Interval = 1000
Form1.BackColor = &HFFFFFF
Timer1_Timer
Form1.Show
Form1.Refresh
Call Timer1_Timer
End Sub
Private Sub Form_Paint()
Call MyDraw
End Sub
Public Sub MyDraw()
Cls
Scale (-100, 100)-(100, -100)
For i = 0 To 2 * PI Step PI / 30
Form1.DrawWidth = 3
PSet (60 * Cos(-i), 60 * Sin(-i)), vbGreen
Next i
For i = 0 To 2 * PI Step PI / 6
Form1.DrawWidth = 6
PSet (60 * Cos(-i), 60 * Sin(-i)), vbRed
Next i
End Sub
Private Sub Form_Resize()
Form1.Refresh
End Sub
Private Sub Timer1_Timer()
Form1.Refresh
Form1.Caption = Time
s = Second(Time) * PI / 30
DrawWidth = 2
Line (0, 0)-(55 * Cos(-Second(Time) * (PI / 30) + PI / 2), 55 * Sin(-Second(Time) * (PI / 30) + PI / 2)), vbBlue
m = Minute(Time)
m1 = (m + s / 60) * (PI / 30) - PI / 2
DrawWidth = 3
Line (0, 0)-(45 * Cos(-m1), 45 * Sin(-m1)), vbBlack
h = Hour(Time)
h1 = (h + (m * 60 + s) / 3600) * PI / 6 - PI / 2
DrawWidth = 3.5
Line (0, 0)-(25 * Cos(-h1), 35 * Sin(-h1)), vbGreen
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询