verilog60秒倒计时代码_Windows编程-简单倒计时器开发

63d537546a054adda7b23835933dfcbe.png

Win Form编程简单倒计时器开发

#程序员干货站#倒计时应用功能是我们日常工作中常用的需求之一,比如在演讲比赛每位演讲者只允许演讲8分钟,最后一分钟会给出提示。各类考试面试计时也往往需要进行倒计时,并对结束时间进行提示等。结合教学需求,确定设计开发基于Timer的简单倒计时器。本文主要对倒计时器实现的基本思路、资源、设计及实现核心代码等进行说明,最终给出实现效果展示。


基本设计思路

所谓倒计时器即设置好计时时间,依靠C#提供的计时器函数,周期显示计时数字,直到最终显示为零,结束计时。设计图如下所示:

b80b9fa5545fbe9af330fba3febe2a06.png

计时器样式

其中所显示的数字可使用图片,借助Win Form提供的pictureBox控件,显示图片资源。在计时器周期函数中改变每一个pictureBox控件中的图片。本例设计计时器样式如上图,因此所需pictureBox控件数量为8。其中6个分三组用于显示计时数子,中间两个用于显示分隔符号:。计时器需要全屏显示,数字图片需要根据设备尺寸自动调整位置与大小。

在开始计时前允许用户设置计时的时长及是否给出声音提示等。本例设置计时时长分别为10,8,5,3,1。并支持在最后十秒给出声音提示。设置窗口设计如下图所示:

3dbe113b93ebae3c6f134e97c5c32c22.png

基本参数设置页面

本例由于倒计时直到结束,对秒一下数字精度要求不高,因此设计给出4个计时器,其中一个用于实现分割符号的闪烁、一个用于分钟时间的改变、一个用于秒数的改变、一个用于最右侧一组数字的变化。

所需资源素材

本例设计思路描述上所述,需要准备素材包括图片资源与WAV格式提示音等相关素材。主要素材如下图所示:

5e0713eb1acd17a6ea3927e8fa55d046.png

计时数字素材示例

73aea9f1509eb0b709eb00b7c436fd5b.png

音频、间隔符及图片PS源图

核心实现说明

在完成基本思路、解决措施及资源准备之后,即可使用Visual Studio进行编程实现。本例选择Visual Studio版本为2019版本。编程环境截图如下:

9b2489636aafa66bea88e4be8a0ba5a2.png

开发环境

以下对页面开发、功能实现等部分核心编程实现进行分析与说明:

1、计时全屏最大及位置确定

本例题设计进入计时页面后,页面全屏显示,隐藏标题栏部分,并且自动计算屏幕尺寸,生成picturebox控件的尺寸,确定各picturebox控件的显示位置。设计全屏幕共10个picturebox的宽度,两侧各空余1个picturebox宽度位置,因此,picturebox宽度即为屏幕宽度的1/10。素材给出图片宽高比为1:2。可以计算出高度,再根据控件高度与屏幕高度确定居中显示位置。主要实现代码如下所示:

d16d846ec40722f2603ca8bad7514644.png

控件尺寸及位置坐标计算

2、加载图片与声音资源

本例开发的是桌面应用小程序,为方便使用各类资源无需外部调用,因此直接导入到项目资源中,发布程序之后可直接使用。其中图片资源缩略如下图:

d769ac27d6b2dbe065bc77bbaba9ac5c.png

项目资源加载

资源加载完成之后可直接编程调用使用资源,各类资源使用代码描述如下:

4f5da0463d8883b2e7801aa289c4da4d.png

使用Resource中的图片资源

6f4f5bbb161410e7337890b5c31e151b.png

加载WAV资源

3、设置计时图片显示

在Timer计时处理方法中,需要对三组数字(分钟、秒、毫秒)部分进行显示图片的切换。其中右侧两组相对复杂,以秒为例进行说明。由于秒的进位是60,因此在修改图片时需要从秒中分别读取出十位与个位数字,并进行判断,选择所需显示的图片。如秒位值为36,需要分别取出3与6进行判断,然后选择图片资源。该部分实现代码如下:

a7f7586496cdd1a8e9d95aac6817ee2a.png

设置显示图片

4、计时器编写

本例计时器主要包括间隔符闪烁计时,三组数字的计时,因此需要4个计时器,其中分钟的计时周期为60000微秒、秒计时周期为1000微秒,秒以下部分计时周期为10微秒。计时器编写部分代码如下所示:

f7d9d31d0fa1105ef1148c01242f6504.png

计时器初始化

三个数字改变计时器分别绑定了处理的方法,tmA、tmB、tmC三个函数,用于周期处理倒计时业务。其中tmB处理秒部分,每一个1000微秒,其值以60为周期减一,实现代码截图如下:

6375950e0dc75031432f8cc180ab608d.png

秒处理部分代码

实现效果展示

以上给出了部分实现的代码,本例由于计时精度只需要保证秒即可,因此使用了三个计时器实现分别计算。在各计时周期内分别读分钟、秒等进行显示图片的改变,最终实现倒计时效果。最终开发程序运行效果如下:

990fe46f97608b1743010d4908b67402.gif

程序测试截图


本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。本例题完整代码素材可提供,如需求请关注、私信索取。期待大家关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值