DEMO:钟表和电子表(二)

二、设计界面

V

 

三、功能代码:

1、钟表:

①窗体加载过程

'设置坐标和圆心并且绘画表盘

Private Sub Form_Load()
    lcdTest.NewLCD Picture1
    CircleCentreX = Shape1.Left + Shape1.Width / 2
    CircleCentreY = Shape1.Top + Shape1.Height / 2
    CircleRadius = Shape1.Width / 2 - 40
    Call DrawClockForm
End Sub

'画表盘,定义控件数组,根据盘的坐标和半径来让数字准确的显示在表盘上

Private Sub DrawClockForm()
    Dim ClockNumX As Integer
    Dim ClockNumY As Integer
    Dim Num As Integer
    Dim deg As Integer
    For Num = 1 To 12
        deg = 90 - (Num * 30)
        ClockNumX = CircleCentreX + CircleRadius * (Cos(deg * pi / 180))
        ClockNumY = CircleCentreY - CircleRadius * (Sin(deg * pi / 180))
        Load Label1(Num)
        Label1(Num).Caption = Num
        Label1(Num).Move ClockNumX - 4, ClockNumY - 7
        Label1(Num).Visible = True
    Next Num
End Sub

②、命令按钮控制开始和停止

Private Sub Command1_Click()
    If Command1.Caption = "开始" Then
        Command1.Caption = "停止"
        Timer1.Enabled = True
    Else
        Command1.Caption = "开始"
        Timer1.Enabled = False
    End If
End Sub

③、timer事件:

’获取当前系统时间,并调用画三指针过程

Private Sub Timer1_Timer()
    Static TimerRuning As Boolean
    Static NowHour As Integer, NowMinute As Integer, NowSecond As Integer
    Dim NowTime As Date
    lcdTest.Caption = Time
    If (TimerRuning) Then
        Exit Sub
    End If
    If (NowSecond <> Second(Time)) Then
        TimerRuning = True
        NowTime = Time
        NowHour = Hour(NowTime)
        NowMinute = Minute(NowTime)
        NowSecond = Second(NowTime)
        Call DrawHour(NowHour, NowMinute, NowSecond)
        Call DrawMinute(NowMinute, NowSecond)
        Call DrawSecond(NowSecond)
    End If
    TimerRuning = False
End Sub

Public Sub DrawHour(ByVal h As Integer, ByVal m As Integer, ByVal s As Integer)
    Dim d As Integer
    d = 90 - (h * 30 + m / 2 + s / 120)
    Line2.X1 = CircleCentreX - 7 * Cos(d * pi / 180)
    Line2.Y1 = CircleCentreY + 7 * Sin(d * pi / 180)
    Line2.X2 = CircleCentreX + (CircleRadius - 40) * Cos(d * pi / 180)
    Line2.Y2 = CircleCentreY - (CircleRadius - 40) * Sin(d * pi / 180)
End Sub

Public Sub DrawMinute(ByVal m As Integer, ByVal s As Integer)
    Dim d As Integer
    d = 90 - (m * 6 + s / 10)
    Line1.X1 = CircleCentreX - 8 * Cos(d * pi / 180)
    Line1.Y1 = CircleCentreY + 8 * Sin(d * pi / 180)
    Line1.X2 = CircleCentreX + (CircleRadius - 20) * Cos(d * pi / 180)
    Line1.Y2 = CircleCentreY - (CircleRadius - 20) * Sin(d * pi / 180)
End Sub

Public Sub DrawSecond(ByVal s As Integer)
    Dim d As Integer
    d = 90 - s * 6
    Line3.X1 = CircleCentreX - 10 * Cos(d * pi / 180)
    Line3.Y1 = CircleCentreY + 10 * Sin(d * pi / 180)
    Line3.X2 = CircleCentreX + (CircleRadius - 10) * Cos(d * pi / 180)
    Line3.Y2 = CircleCentreY - (CircleRadius - 10) * Sin(d * pi / 180)
End Sub

2、电子表:

钟表和电子表(三)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值