当前位置:首页 > vb课程设计指导书
(c)
图17. 3秒表模式
4.选择相应菜单命令进入倒计时模式时,首先弹出如图17.4所示的“设置倒计时长度”对话框。输入时分秒值,并单击“开始”按钮关闭对话框后直接开始倒计时(如图17.6所示)、如果指定的时间不正确,如输入负值或大于59的分或秒,则显示图17.5所示的消息框要求重新输入。
图17. 4设置倒计时长度
图17. 5错误信息
如果倒计时时间归零,则显示图17.7所示的“时间到!”字样,并且窗口背景以不同的颜色闪烁以示提醒。
图17. 6倒计时
图17. 7倒计时时间到
【难点与提示】
1.本题的Resource文件夹中提供了一个图片文件LED.BMP(如图17.8所示),该图片的大小为256×
27像素。图片中依次共有0~9、冒号、连字符、点、A、P和空格等16个本程序需要用的LED风格字符,每个字符宽度均为16个像素。
图17. 8数码管方式使用的图片
使用PictureClip控件将此图片分为16个图块(Rows属性为1,Cols属性为16),然后根据显示的需要将图块绘制到窗体或图片框中即可显示时间,也可以将图块赋值给Image控件数组来显示时间。
48
下面的例程演示了如何将一个包括时间信息的字符串以液晶的效果显示到一个图片框中,期中PC是已设置好Picture、Rows和Cols属性的PictureClip控件名。
Private Sub Show_LED(pic As PictureBox, str As String) Dim s As String * 1 Dim pos As Integer Dim i As Integer Dim n As Integer
For i = 1 To Len(str) s = Mid(str, i, 1) n = -1
Select Case s
Case \ n = CInt(s) Case \ n = 10 Case \ n = 11 Case \ n = 12 Case \ n = 13 Case \ n = 14
Case \ '空格 n = 15 End Select If n <> -1 Then
pic.PaintPicture PC.GraphicCell(n), pos, 0 pos = pos + 16 End If Next End Sub
因为所有显示内容全部来自于LED.BMP文件,所以可以在设计时将次文件赋值给PictureClip控件的Picture属性。
2.为了保证正确绘制,应将显示时间的图片框(或窗体)的ScaleMode属性设置为3(以像素为绘制单位)、将AutoRedraw属性设计为True。
【更上一层楼】
样例程序在每次Timer事件发生时全部重绘所有的字符,这在编程上相对简单,但是程序的执行效率
不高。例如,时钟由“2014-10-30 05:11:45P”一秒后变为“2014-10-30 05:11:46P”,其实只是秒发生了变化,没有必要将所有字符重绘。这样会大大浪费计算资源,在秒表模式下问题会更突出,因为每隔0.01s
49
共分享92篇相关文档