1.如何画时钟表盘上的所有直线元素?
用Load命令建立原始Line控制的14个拷贝(因为表盘有12个点和时、分、秒共15个Line),该控制数组每一个实例的端点坐标属性设置为每条线在时钟表盘上的适当位置。这些拷贝中大多数只放置一次,而3个Line控制每秒钟更新一次,产生时钟指针移动的感觉。
注意:在应用程序代码中并没有直接擦除任何一条线。当我们改变每一个Line控制的端点时,每一根针在移动时擦除和重画的所有技术工作都由VB来处理。
2.如何修改时针的形状?
通过调整代码中的属性设置,可以改变时钟的形状。例如:通过改变每一个Line控制的Borderwidth属性设置,可以建立更细或更粗的线。
3.计时器的Interval(间距)属性设置
计时器的Interval属性设置为100,即为1/10秒。
程序的编写与执行
(1)新建工程
先新建一个工程(工程类型为标准EXE),然后用“工具箱”中的工具加入一个Timer1(计时器)和line1(直线),其index(指针)分别设置为空和0。然后双击Form1窗体,输入源代码。
(2)程序源代码
OptionExplicit
DefDblA-Z
PrivateSubForm_Load()
timer1.Interval=100
Width=4000
Height=4000
Left=Screen.Width\2-2000
Top=(Screen.Height-Height)\2
EndSub
PrivateSubForm_Resize()
Dimi,Angle
StaticflagAsBoolean
Ifflag=FalseThen
flag=True
Fori=0To14
’画出表盘12个点和时、分、秒共15个LINE
Ifi>0ThenLoadLine1(i)
Line1(i).Visible=True
Line1(i).BorderWidth=5
Line1(i).BorderColor=RGB(0,128,0)’设置LINE的粗细和颜色
Nexti
EndIf
Fori=0To14
Scale(-1,1)-(1,-1)
Angle=i*2*Atn(1)/3
Line1(i).X1=0.9*Cos(Angle)
Line1(i).Y1=0.9*Sin(Angle)
Line1(i).X2=Cos(Angle)
Line1(i).Y2=Sin(Angle)
Nexti
EndSub
PrivateSubtimer1_Timer()
ConstHH=0
ConstMH=13
ConstSH=14
DimAngle
StaticLS
IfSecond(Now)=LSThenExitSub
LS=Second(Now)
Angle=0.5236*(15-(Hour(Now) Minute(Now)/60))’设置时针
Line1(HH).X1=0
Line1(HH).Y1=0
Line1(HH).X2=0.3*Cos(Angle)
Line1(HH).Y2=0.3*Sin(Angle)
Angle=0.1047*(75-(Minute(Now) Second(Now)/60))’设置分针
Line1(MH).X1=0
Line1(MH).Y1=0
Line1(MH).X2=0.7*Cos(Angle)
Line1(MH).Y2=0.7*Sin(Angle)
Angle=0.5236*(75-Second(Now))
’设置秒针
Line1(SH).X1=0
Line1(SH).Y1=0
Line1(SH).X2=0.8*Cos(Angle)
Line1(SH).Y2=0.8*Sin(Angle)
form1.Caption=Str(Now())
'窗口显示精确的日期和数字化的时间
EndSub
(3)程序的编译和执行
点击VB“运行”菜单中的“启动”或“全面编译”命令,即可对程序编译并运行!
注:上述程序在中文Windows98和VB5.0中文企业版下调试通过。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!