欢迎访问有用文档网!

当前位置: 有用文档网 > 作文大全 >

简单VB小程序之虚拟时钟

| 浏览次数:

代表时间的点,然后就是在钟盘的中心位置绘制时针、分针和秒针,当绘制完以上所有内容时,静态的虚拟时钟就算绘制完毕。第二部分则是如何让时针、分针和秒针动起来,并能准确地显示当前的时间,这个过程的虚拟时钟可以称之为动态时钟,它完全可以模拟现实里的时钟。这个动态的过程是程序编写的重点所在,需要分别对时针、分针和秒针做数学分析,建立数据公式,然后利用得到的公式进行编程,实现这个最终的动态过程。

二、建立公式

首先是对秒针的分析,秒针在时钟上一共走了60下,所以相当于把一个圆分成60份,每一份的弧度是2π÷60=,秒针在60个刻度上走过时所对应的弧度分别为:

于是,不难看出,当确定了秒针在刻度上的位置iSec时,该位置对应的弧度为-iSec*。所以推出当前秒针位置对应的坐标点的坐标值分别为x=cos(-iSec*),y=sin(-iSec*),这里我们暂时把圆的半径看做是1,而在程序中圆的半径我们可以自行调整。

其次,对分针的分析,同秒针一样,分针也走60下,所以也是把一个圆等分成60份,用同样的推理方法最后得到了和秒针一样的公式,既坐标点的坐标值分别为x=cos(-iMin*),y=sin(-iMin*),这里不在重复叙述,其中iMin代表分针在刻度上的位置。

最后,对时针的分析,时针一共有12个点,因此在理论上,时针把一个圆等分12份,每份的弧度是2π÷12=,时针在12个刻度上走过时所对应的弧度分别为:

最后得到的公式为:当确定时针在刻度上的位置iHour时,该位置对应的弧度为-iHour* ,进而推出当前时针位置对应的坐标点的坐标值为x=cos(-iHour*),y=sin(-iHour*)。但是这个公式只能使时针就在12个坐标点上移动,过于简单,也不符合实际情况,所以要进一步完善这个公式。为了时针的移动更加接近实际情况,我引入一个时针移动余量的概念。钟盘上一共有12个时针可以移动的坐标点,既12个刻度,在每两个相邻刻度之间再加上3个等距离的坐标点,这样以来,这3个坐标点把相邻的两个刻度分成4等份,每等份都称为时针移动余量。其实,时针移动余量取决于分针在钟盘上的位置,4个余量等于分针一圈的距离,也就是说把分针一圈4等份,分针在哪一个区域就对应了时针在哪一个余量上,这样以来就解决了时针在余量上移动的设想。4个余量与分针区域的一一对应关系为:第一余量,0-15;第二余量,16-30;第三余量,31-45;第四余量46-60;可以看出,当取得当前分针位置iMin时,那么它对应的时针移动余量为,(iMin+1) Mod 15,每个余量对应的弧度为 [(iMin+1)Mod 15] * [2π÷12÷4],既*((iMin+1)\15)。

结合之前得到的坐标点的坐标值,进一步完善公式为:

x=cos(-iHour*-*((iMin+1)\15)),

y= sin(-iHour*-*((iMin+1)\15))。

这样以来,时针就可以在余量上移动了,可以更加完美的模拟现实时钟时针的移动。

‘定义常亮π

Private Const Pi = 3.14

‘定义绘制时钟框架的过程

Private Sub DrawClockFrame()

Picture1.DrawWidth = 8

Picture1.ForeColor = vbBlack

Picture1.PSet (0, 0)

Dim x As Single, y As Single, i As Integer

For i = 1 To 12

y = 9 * Sin(Pi * i / 6)

x = 9 * Cos(Pi * i / 6)

Picture1.PSet (x, y)

Next i

End Sub

Private Sub Command1_Click()

Timer1.Enabled = True

End Sub

Private Sub Command2_Click()

Timer1.Enabled = False

End Sub

Private Sub Form_Activate()

DrawClockFrame

End Sub

Private Sub Form_Load()

Form1.Caption = “簡单VB程序之虚拟时钟”

Picture1.Width = Picture1.Height

Picture1.Scale (-10, 10)-(10, -10)

Picture1.BackColor = vbWhite

Command1.Caption = “开始”

Command2.Caption = “结束”

Timer1.Interval = 1000

Timer1.Enabled = False

End Sub

Private Sub Timer1_Timer()

Picture1.Cls

‘绘制时钟框架

DrawClockFrame

‘绘制秒针

Dim iSec As Integer

iSec = Second(Now())

x = 9 * Cos(Pi * (15 - iSec) / 30)

y = 9 * Sin(Pi * (15 - iSec) / 30)

Picture1.DrawWidth = 2

Picture1.ForeColor = vbRed

Picture1.Line (0, 0)-(x, y)

‘绘制分针

Dim iMin As Integer

iMin = Minute(Now())

x = 7 * Cos((15 - iMin) / 30 * Pi)

y = 7 * Sin((15 - iMin) / 30 * Pi)

Picture1.DrawWidth = 3

Picture1.ForeColor = vbBlue

Picture1.Line (0, 0)-(x, y)

‘绘制时针

Dim iHour As Integer

iHour = Hour(Now())

x = 5 * Cos(Pi / 2 - Pi / 6 * iHour - Pi / 24 * ((iMin + 1) \ 15))

y = 5 * Sin(Pi / 2 - Pi / 6 * iHour - Pi / 24 * ((iMin + 1) \ 15))

Picture1.DrawWidth = 6

Picture1.ForeColor = vbGreen

Picture1.Line (0, 0)-(x, y)

End Sub

四、运行与测试

1.程序编写完成后,运行程序,点击开始按钮后,結果如图所示

2.点解结束按钮后,时钟停止,再点击开始按钮后,时钟按照正确的当前时间显示。

结语

此程序成功得模拟了现实时钟的运行,并能正确地显示当前的时间。之所以能实现从现实到虚拟的转化,关键取决于对问题的正确分析,进而建立数据模型,利用用数据模型编程,最终实现了虚拟时钟。如果前期的分析不正确,是不会实现虚拟时钟的。通过此程序使我从面对实际问题到转化为计算机语言问题,再到编程解决问题得到了很好的锻炼,相信在以后生活中会更加容易利用VB去面对并解决诸如此类的问题,会使编程水平得到更好的提高,开发出一些更具意义的好程序。

推荐访问:时钟 简单 虚拟 程序 VB

热门排行Top Ranking

支部组织生活方面存在问题清单和整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的支部组织生活方面存在问题清单和整改措施党组织生活个人问题整改清单文章,供大家阅读参考

2021年党员个人问题清单及整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的2021年党员个人问题清单及整改措施党组织生活个人问题整改清单文章,供大家阅读参考。

浅析军队战斗力损耗的新变化

关键词:军队;战斗力损耗;新变化军队战斗力的结构,是战斗力各要素间的结合方式和相互关系。军队战斗力的

小学六年级毕业演讲稿100字左右9篇

小学六年级毕业演讲稿100字左右9篇小学六年级毕业演讲稿100字左右篇1敬爱的老师,亲爱的同学们:大

问题及整改措施 (2) 药房个人存在问题及整改措施

下面是小编为大家精心整理的问题及整改措施(2)药房个人存在问题及整改措施文章,供大家阅读参考。精品文章《问题及

个人问题清单及整改措施(最新) 能力作风建设个人问题清单及整改措施

下面是小编为大家精心整理的个人问题清单及整改措施(最新)能力作风建设个人问题清单及整改措施文章,供大家阅读参考。在认真

疫情防控赞美警察诗朗诵 关于警察的诗朗诵

下面是小编为大家精心整理的疫情防控赞美警察诗朗诵关于警察的诗朗诵文章,供大家阅读参考。疫情防控赞美警

纳税人满意度调查存在不足及对策探讨 提升纳税人满意度的方式方法有哪些

下面是小编为大家精心整理的纳税人满意度调查存在不足及对策探讨提升纳税人满意度的方式方法有哪些文章,供大家阅读参考。纳

小学思想品德教育面临的问题及对策

摘要:小学思想品德课程是小学教育教学过程中不可或缺的一门综合性课程,它对学生良好品德的形成具有重要影

2020党支部班子查摆问题清单及整改措施 农村党支部问题清单

下面是小编为大家精心整理的2020党支部班子查摆问题清单及整改措施农村党支部问题清单文章,供大家阅读参

消防安全检查简报 派出所校园消防安全检查简报

下面是小编为大家精心整理的消防安全检查简报派出所校园消防安全检查简报文章,供大家阅读参考。简报第2期申扎县中学

2021教师党员年度个人总结8篇

2021教师党员年度个人总结8篇2021教师党员年度个人总结篇1敬爱的党组织:我是一个普通年轻的人民