在平常生活当中,闹钟的指针是按照顺时针方向旋转的,如何实现指针按照系统时间而像现实当中那样随着时间而旋转??
解决方案 »
- 请教标签数组下划线的问题
- 哪位boos帮忙看看
- DataList连接成绩表,DataGrid连接基本情况表,怎样点击列表中的姓名,在网格内显示该姓名的成绩?
- 求DirectX 8.0或8.1 SDK,帮顶给分
- 求助打印:如何在vb中生成打印预览(底为图片上加文子)
- 请教一个小问题
- 一个不算难的问题!但是我不会!请问,如何不用WINSOCK控件就能知道本机的IP地址?UP有分
- 在vb中如何实现与window中右键的"刷新"一样的功能呢?
- 春节快乐,散分+发布SuperPlayer 1.5春节版
- 各位,用VB开发数据库应用程序后,能否将数据库的结构和记录打包在SETUP文件中?
- 请教:如何才能枚举全部打开了的窗口?
- 怎样用api函数调出"数据库链属性"对话框
Begin VB.Form Form1
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "日历表"
ClientHeight = 4080
ClientLeft = 60
ClientTop = 345
ClientWidth = 6375
LinkTopic = "Form1"
ScaleHeight = 4080
ScaleWidth = 6375
StartUpPosition = 3 '窗口缺省
Begin VB.Timer Timer1
Left = 240
Top = 360
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim sngCX As Single, sngCY As Single '重置坐标
Dim blnBeginFlag As Boolean '是否初次
Dim sngRClock As Single '时钟半径
Dim intPreHr As Integer '前次小时
Dim intPreMin As Integer '前次分
Dim intPreX As Integer '前次秒
Dim intPreY As Integer '前次分
Dim sngHLen As Single '时针长
Dim sngMLen As Single '分针长
Dim sngSLen As Single '秒针长
Const pi = 3.1415926
Sub DrawClock() '画表盘的子程序
Dim intI As Integer
Dim sngX As Single, sngY As Single
Circle (0, 0), sngRClock '时钟外圆
For intI = 0 To 60 '时钟刻度
sngX = (sngRClock - 50) * Sin(intI * pi / 30)
sngY = (sngRClock - 50) * Cos(intI * pi / 30)
If (intI Mod 5) = 0 Then '绘主刻度
DrawWidth = 4
PSet (sngX, sngY)
Else '绘次刻度
DrawWidth = 2
PSet (sngX, sngY)
End If
Next intI
DrawWidth = 1
'建立打印日期和星期的矩形框
Line (0.3 * sngRClock, 100)-(0.9 * sngRClock, -100) _
, , B
Line (0.7 * sngRClock, 100)-(0.7 * sngRClock, -100)
FillStyle = 0 '填充
FillColor = vbBlack '黑色
Circle (0, 0), 70 '画中心的小圆
End Sub
Private Sub Form_Load()
Timer1.Interval = 1000
Form1.AutoRedraw = True '窗体改变后可重绘
sngCX = ScaleWidth / 2
sngCY = ScaleHeight / 2
'使窗口中心为(0,0)
Scale (-sngCX, sngCY)-(sngCX, -sngCY)
blnBeginFlag = True
sngRClock = 1500 '时钟半径
sngHLen = sngRClock * 0.6 '时针长
sngMLen = sngRClock * 0.8 '分针长
sngSLen = sngRClock * 0.9 '秒针长
End Sub
Private Sub Timer1_Timer()
Dim intX As Integer, intY As Integer
Dim intHr As Integer, intMin As Integer
Dim intSec As Integer
Dim sngH As Single
Dim vntBlack, vntGray
'初次执行需绘表盘
If blnBeginFlag = True Then
DrawClock
End If
'填写日期和星期
CurrentX = 0.7 * sngRClock
CurrentY = 80
Print Day(Now) '日期
CurrentX = 0.35 * sngRClock
CurrentY = 80
Print WeekdayName(Weekday(Now)) '星期
intHr = Hour(Now)
intHr = intHr Mod 12 '使小时在0-11之间
intMin = Minute(Now) '取得分
DrawWidth = 3 '时针和分针宽度
vntBlack = vbBlack '黑色时针及分针
If blnBeginFlag = True Then
DrawMode = 13 'CopyPen绘图模式
sngH = intHr * 5 + intMin / 12
intX = sngHLen * Sin(sngH * pi / 30)
intY = sngHLen * Cos(sngH * pi / 30)
intPreHr = intHr
Line (0, 0)-(intX, intY), vntBlack '绘时针
intX = sngMLen * Sin(intMin * pi / 30)
intY = sngMLen * Cos(intMin * pi / 30)
Line (0, 0)-(intX, intY), vntBlack '绘分针
intPreMin = intMin
End If
If intPreMin <> intMin Then '如果分针改变
DrawMode = 10 'NotXorPen绘图模式
sngH = intPreHr * 5 + intPreMin / 12
intX = sngHLen * Sin(sngH * pi / 30)
intY = sngHLen * Cos(sngH * pi / 30)
Line (0, 0)-(intX, intY), vntBlack '清除旧时针
intX = sngMLen * Sin(intPreMin * pi / 30)
intY = sngMLen * Cos(intPreMin * pi / 30)
Line (0, 0)-(intX, intY), vntBlack '清除旧分针
DrawMode = 13 'CopyPen绘图模式
sngH = intHr * 5 + intMin / 12
intX = sngHLen * Sin(sngH * pi / 30)
intY = sngHLen * Cos(sngH * pi / 30)
intPreHr = intHr
Line (0, 0)-(intX, intY), vntBlack '绘新时针
intX = sngMLen * Sin(intMin * pi / 30)
intY = sngMLen * Cos(intMin * pi / 30)
Line (0, 0)-(intX, intY), vntBlack '绘新分针
intPreMin = intMin
End If
intSec = Second(Now) '取得秒
intX = sngSLen * Sin(intSec * pi / 30)
intY = sngSLen * Cos(intSec * pi / 30)
DrawWidth = 1
DrawMode = 10 'NotXorPen绘图模式
vntGray = QBColor(8) '灰色秒针
Line (0, 0)-(intPreX, intPreY), vntGray
Line (0, 0)-(intX, intY), vntGray '绘新秒针
intPreX = intX
intPreY = intY
blnBeginFlag = False '已经执行过该程序
End Sub