欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 毕业论文 > 计算机毕业论文

利用VB实现动态时钟的算法分析_函数

时间:2011-06-24  作者:秩名

论文导读::利用Visual Basic制作模拟表针转动并伴有动态图像及时间显示的时钟,当时钟到达整点时响铃。
论文关键词:控件,函数,方法
 

常见的时钟均是以字符形式显示当前的时间,这种显示方式太过死板,为使时间的显示形象、生动,我利用VB设计了一个时、分、秒针动态转动的时钟的算法。VB中用来显示时间最简单的方法是利用函数取出时、分、秒以字符形式显示,要模拟真实的指针转动必须配合VB中其他控件中国知网论文数据库

1、编程思路

控件利用VB中的形状控件画出时、分、秒针,为使是、分、秒针动态转动,首先可使用line方法初始化时、分、秒针一端的坐标为用户自定义坐标系统的原点,再利用时、分、秒转过的角度求出时、分、秒针另一端的坐标函数,然后利用line方法确定时、分、秒针在自定义坐标系统中另一端的位置。下面以某一时刻为例说明实现时针转动的具体算法。设当前时间为h:m:s,时针长为R1,端点坐标为(x1,y1),分针长为R2,端点坐标为(x2,y2),秒针长为R3,端点坐标为(x2,y2),为求出三个端点的坐标,只须求出他们转过的角度,利用极坐标与直角坐标的关系即可求出端点坐标。图1给出直角坐标系统中时、分、秒针的坐标与时、分、秒针转过的角度的关系(默认坐标系统的y轴正方向向上);利用时钟控件的Timer事件实现秒针每转一次加载一副背景图像,从而达到动态图像的效果。

秒针每走一秒转过的角度为6度,走过s秒,则其转过的角度为6s,若y轴正方向向上,则秒针的顶点坐标值为:

X3=sin((6*s) *∏/180) *r3

y3=cos((6*s) *∏/180) *r3

若y轴正方向向下,则顶点坐标值为:

X3=sin((180-6*s) *∏/180) *r3

y3=cos((180-6*s) *∏/180) *r3

分针每走一分转过的角度为6度,走过m分,(毫秒忽略不计)则分针转过的角度为6m函数,若y轴正方向向上,则分针的顶点坐标值为:

X2=sin((6*m) *∏/180) *r2

Y2=cos((6*m) *∏/180) *r2

若y轴正方向向下,则顶点坐标值为:

X2=sin((180-6*m)*∏/180) *r2

Y2=cos((180-6*m)*∏/180) *r2

时针每走一小时其转过的角度为30度,考虑到系统取出的小时值为整点时间,而时针有指到两个整点时刻的时候,所以时针端点坐标的计算应考虑到时针转过整点时刻的情况,把时针转过整点时刻的分钟值转化为小时值,即一分钟为1/60小时,则可求出时针转过的总小时值,即若当前时间为h小时m分钟,则时针转过的总小时值,即若当前时间为h小时m分钟,则时针转过的角度为30*(h+m/60)度,那么时针的端点坐标值为:

X1=sin((30*(h+m/60))*∏/180) *r1

Y1=cos((30* (h+m/60)) *∏/180) *r1

若自定义坐标系统的y轴正方向向下,则时针的端点坐标值为:

X1=sin((180-30*(h+m/60))*∏/180) *r1

Y1=cos((180-30* (h+m/60)) *∏/180) *r1

因为时、分、秒针转过的角度不断变化,所以时、分、秒针的端点坐标也在不断变化,从而实现了时、分、秒针动态转动的效果中国知网论文数据库。时、分、秒的时间值分别利用函数hour(time)、minute(time)、second(time)求得(time为系统时间)。

2、流程图如下

3.程序的主要源代码如下

Private Sub Timer1_Timer() ‘显示系统时间

Label1.Visible=True

Label1.Caption=Time $ ‘装入图形函数,以实现秒针每走一秒背景图标动态的效果

Static pickbmp as integer

If pickbmp then

Image1.picture=loadpicture(“e: bmoon02.ico”)

Else

Image1.picture=loadpicture(“e: bmoon08.ico”)

End if

Pickbmp=not pickbmp

Line1.visible=true:line2.visible=true:line3.visible=true

‘确定指针的初始位置

Line2.x1=0:line2.y1=0

Line1.x1=0:line1.y1=0

Line3.x1=0:line3.y1=0

‘在指定位置处打印时钟的刻度

Form1.forecolor=vbGreen

Form1.currentX=-7

Form1.currentY=68

Form1.print “6”

Form1.forecolor=vbRed

Line(-2,95)-(-2,85)

Form1.forecolor=vbGreen

Form1. .currentX=-10

Form1.currentY=-85

Form1.print “12”

Form1.forecolor=vbRed

Line(-2,-95)-(-2,-85)

Form1.forecolor=vbGreen

Form1. .currentX=70

Form1.currentY=-10

Form1.print “3”

Form1.forecolor=vbRed

Line(80,-3)-(85,-3)

Form1.forecolor=vbGreen

Form1. .currentX=-75

Form1.currentY=-10

Form1.print “9”

Form1.forecolor=vbRed

Line(-80,-3)-(-85,-3)

‘下列语句为时、分、秒针端点坐标计算,指定秒、分、时针的长度分别为65、55、40

Sx=sin((180-6*Second(time))*3.14159/180)*65

Sy=cos((180-6*Second(time))*3.14159/180)*65

Line3.x2=sx:line3.y2=sy

mx=sin((180-6*minute(time))*3.14159/180)*55

my=cos((180-6*minute(time))*3.14159/180)*55

Line2.x2=mx:line2.y2=my

hx=sin((180-(30*hour(time)+30*minute(time)/60))*3.14159/180)*40

hy=cos((180-(30*hour(time)+30*minute(time)/60))*3.14159/180)*40

Line1.x2=hx:line1.y2=hy

‘整点响铃

If second(time)/60=0 And Minute(time)/60=0 then

Beep

End if

End sub

该程序经调试可准确运行,为便于用户使用,可将程序添加到系统的开始菜单的启动子菜单中,系统每次启动时在桌面上自动运行该程序;该程序对教学也有一定的参考价值,在讲时钟控件与图形控件时,利用此程序可调动学生对这部分内容的兴趣,也可充分发挥学生的特长,让学生完善该时钟的制作。为了能将此文件作为一个独立的程序来运行(脱离VB环境下)和能作为一个完整的软件进行拷贝,须利用VB中的package&Deployment向导制作成一套安装程序。


[参考文献]
[1]龚沛曾、陆慰民、杨志强,Visual Basic 程序设计教程[M]高等教育出版社
[2]胡喆,利用VB开发多媒体程序的一个实例[J]微型计算机应用,第19卷第1期,1998
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:初试利用Opencv完成视频识别_匹配
下一篇论文:均线形态组合在股票分析中的应用_走势
毕业论文分类
行政管理毕业论文 工商管理毕业论文
护理毕业论文 会计毕业论文
会计专业毕业论文 英语专业毕业论文
大学毕业论文 硕士毕业论文
计算机毕业论文 市场营销毕业论文
物流管理毕业论文 法学毕业论文
相关计算机毕业论文
最新计算机毕业论文
读者推荐的计算机毕业论文