|
-
Dec 22nd, 2000, 01:46 PM
#1
Thread Starter
Addicted Member
How can I draw an analog clock?
AtDhVaAnNkCsE
( : ns-code : )
FCP Products

-
Dec 22nd, 2000, 02:51 PM
#2
-
Dec 22nd, 2000, 03:05 PM
#3
Try something like:
Code:
Private sngRadius As Single
Private sngCX As Single
Private sngCY As Single
Private Const pi = 3.14
Private Sub Form_Paint()
Form_Resize
End Sub
Private Sub Form_Resize()
Dim sngAngle As Single
Dim lHour As Long, lMin As Long
Timer1.Enabled = False
Cls
DoEvents
sngCX = ScaleWidth / 2
sngCY = ScaleHeight / 2
sngRadius = sngCX - 1000
Me.DrawWidth = 2
Me.FillColor = vbWhite
Me.FillStyle = vbSolid
Me.Circle (sngCX, sngCY), sngRadius
For lHour = 0 To 11
sngAngle = (lHour * 30) * (pi / 180)
Me.Line (sngCX + (Sin(sngAngle) * (sngRadius - 90)), sngCY + (-Cos(sngAngle) * (sngRadius - 90)))-Step(Sin(sngAngle) * 100, -Cos(sngAngle) * 100), vbBlack
Next
Me.DrawWidth = 1
For lMin = 0 To 59
sngAngle = (lMin * 6) * (pi / 180)
Me.Line (sngCX + (Sin(sngAngle) * (sngRadius - 50)), sngCY + (-Cos(sngAngle) * (sngRadius - 50)))-Step(Sin(sngAngle) * 50, -Cos(sngAngle) * 50), vbBlack
Next
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Static sngSecAng As Single, sngHrAng As Single, sngMinAng As Single
Dim sngMnX As Single, sngMnY As Single
Dim sngHrX As Single, sngHrY As Single
Dim sngScX As Single, sngScY As Single
Dim sngAngle As Single, sngMilli As Single
Dim lSecs As Long, lMin As Long, lHr As Long
Timer1.Enabled = False
Me.DrawWidth = 1
sngMilli = Timer
lSecs = CLng(Format(Time, "S"))
lMin = CLng(Format(Time, "N"))
lHr = CLng(Format(Time, "H"))
sngAngle = (CSng(lSecs + (sngMilli - Int(sngMilli))) * 6) * (pi / 180)
sngScX = Sin(sngSecAng) * (sngRadius - 100)
sngScY = Cos(sngSecAng) * (sngRadius - 100)
Me.Line (sngCX, sngCY)-Step(sngScX, -sngScY), vbWhite
sngScX = Sin(sngAngle) * (sngRadius - 100)
sngScY = Cos(sngAngle) * (sngRadius - 100)
Me.Line (sngCX, sngCY)-Step(sngScX, -sngScY), vbRed
sngSecAng = sngAngle
sngAngle = ((CSng(lMin) + (lSecs / 60)) * 6) * (pi / 180)
sngScX = Sin(sngMinAng) * (sngRadius - 100)
sngScY = Cos(sngMinAng) * (sngRadius - 100)
Me.Line (sngCX, sngCY)-Step(sngScX, -sngScY), vbWhite
sngScX = Sin(sngAngle) * (sngRadius - 100)
sngScY = Cos(sngAngle) * (sngRadius - 100)
Me.Line (sngCX, sngCY)-Step(sngScX, -sngScY), vbBlue
sngMinAng = sngAngle
sngAngle = ((CSng(lHr) + (lMin / 60)) * 30) * (pi / 180)
sngScX = Sin(sngHrAng) * (sngRadius / 3 * 2)
sngScY = Cos(sngHrAng) * (sngRadius / 3 * 2)
Me.Line (sngCX, sngCY)-Step(sngScX, -sngScY), vbWhite
sngScX = Sin(sngAngle) * (sngRadius / 3 * 2)
sngScY = Cos(sngAngle) * (sngRadius / 3 * 2)
Me.Line (sngCX, sngCY)-Step(sngScX, -sngScY), vbBlack
sngHrAng = sngAngle
Timer1.Enabled = True
End Sub
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|