[原理] 使用了LINE控件用来表示指针,根据粗细不同,分别为时、分、秒针,每个LINE都有2个点的坐标,一个点是原点,也就是表盘的最中心点,另一个点根据当前的时间计算从而决定。然后通过TIMER控件,每隔1秒计算一次进行刷新,即可以实现。 [实现] 一、新建立一个工程,在默认的窗体上添加以下三个LINE控件和一个TIMER控件,添加以下界面如下: 二、在代码最上面建立全局变量,用于保存时钟原点: Dim x0 As Single Dim y0 As Single 三、在窗体的FORM_LOAD事件中添加如下代码: Private Sub Form_Load() With Form1 .Width = 3000 .Height = 3100 .BackColor = vbBlack .Caption = '动态时钟' End With x0 = 1430 y0 = 1290 With Line1 .X1 = x0 .Y1 = y0 End With With Line2 .X1 = x0 .Y1 = y0 End With With Line3 .X1 = x0 .Y1 = y0 End With Line1.Visible = False Line2.Visible = False Line3.Visible = False Line1.BorderColor = vbRed Line2.BorderColor = vbRed Line3.BorderColor = vbRed End Sub 四、在Timer的Timer事件中添加如下代码 Private Sub Timer1_Timer() Text1.Text = Date Line1.Visible = True Line2.Visible = True Line3.Visible = True Dim R0 As Integer R0 = 1200 R1 = 1000: R2 = 850: R3 = 600 '画12个大圈子 For i = 1 To 12 X1 = x0 + R0 * Sin((i * 30) * 3.1415926 / 180) Y1 = y0 + R0 * Cos((i * 30) * 3.1415926 / 180) Circle (X1, Y1), 30, vbBlue Next i '画60个小圈子 For i = 1 To 60 X1 = x0 + R0 * Sin((i * 6) * 3.1415926 / 180) Y1 = y0 + R0 * Cos((i * 6) * 3.1415926 / 180) Circle (X1, Y1), 10, vbBlue Next i '秒针 With Line1 .X2 = x0 - R3 * Sin(-(Hour(Now) * 30 + Minute(Now) * 0.5) * 3.1415926 / 180) .Y2 = y0 - R3 * Cos(-(Hour(Now) * 30 + Minute(Now) * 0.5) * 3.1415926 / 180) End With '分针 With Line2 .X2 = x0 - R2 * Sin(-(Minute(Now) * 6) * 3.1415926 / 180) .Y2 = y0 - R2 * Cos(-(Minute(Now) * 6) * 3.1415926 / 180) End With '时针 With Line3 .X2 = x0 - R1 * Sin(-(Second(Now) * 6) * 3.1415926 / 180) .Y2 = y0 - R1 * Cos(-(Second(Now) * 6) * 3.1415926 / 180) End With Circle (x0, y0), 20, vbWhite End Sub OK,至此大功告成,点击F5,就可以看到运行结果了。 源代码下载地址: http://www./files/c3a84975-d7dc-11dc-a987-0014221f3995/ |
|
来自: luxinghui2016 > 《图像时钟》