1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9
10 //添加以下命名空间
11 using System.IO;
12 using System.Reflection;
13 using System.Resources;
14 namespace 帅的计时器哈哈
15 {
16 public partial class Form1 : Form
17 {
18 private int _nowsecond = 0;
19 //类字段:冒号控制标志
20 private Boolean _colonFlag = true;
21
22 //数码管位图数组
23 private Bitmap[] _bmpShow = new Bitmap[13];
24
25 //自定义方法:由显示字符获取对应的数码管位图
26 private Image GetResourceImage(string displayStr)
27 {
28 if (displayStr == "0")
29 return _bmpShow[0];
30 else if (displayStr == "1")
31 return _bmpShow[1];
32 else if (displayStr == "2")
33 return _bmpShow[2];
34 else if (displayStr == "3")
35 return _bmpShow[3];
36 else if (displayStr == "4")
37 return _bmpShow[4];
38 else if (displayStr == "5")
39 return _bmpShow[5];
40 else if (displayStr == "6")
41 return _bmpShow[6];
42 else if (displayStr == "7")
43 return _bmpShow[7];
44 else if (displayStr == "8")
45 return _bmpShow[8];
46 else if (displayStr == "9")
47 return _bmpShow[9];
48 else if (displayStr == ".")
49 return _bmpShow[10];
50 else if (displayStr == ":")
51 return _bmpShow[11];
52 else
53 return _bmpShow[12];
54 }
55
56 public Form1()
57 {
58 InitializeComponent();
59 //初始化时间计数值(秒)
60 _nowsecond = 0;
61 //装载数码管位图文件(注意:要保证Debug目录下有images子目录及bmp文件,否则会报错)
62 _bmpShow[0] = new Bitmap("images/0.bmp");
63 _bmpShow[1] = new Bitmap("images/1.bmp");
64 _bmpShow[2] = new Bitmap("images/2.bmp");
65 _bmpShow[3] = new Bitmap("images/3.bmp");
66 _bmpShow[4] = new Bitmap("images/4.bmp");
67 _bmpShow[5] = new Bitmap("images/5.bmp");
68 _bmpShow[6] = new Bitmap("images/6.bmp");
69 _bmpShow[7] = new Bitmap("images/7.bmp");
70 _bmpShow[8] = new Bitmap("images/8.bmp");
71 _bmpShow[9] = new Bitmap("images/9.bmp");
72 _bmpShow[10] = new Bitmap("images/dot1.bmp");
73 _bmpShow[11] = new Bitmap("images/dot2.bmp");
74 _bmpShow[12] = new Bitmap("images/blank.bmp");
75 }
76
77
78 private void label3_Click(object sender, EventArgs e)
79 {
80
81 }
82
83
84 //按钮"开始"的Click事件响应方法
85 private void buttonStart_Click(object sender, EventArgs e)
86 {
87 label2.Visible = false;
88 _nowsecond = 0;
89 //启动定时器
90 timer1.Enabled = true; timer2.Enabled = true;
91
92 //初始化时间计数值
93 labelHour.Text = "00";
94 labelMinute.Text = "00";
95 labelSecond.Text = "00";
96 labelColon1.Visible = true;
97 labelColon2.Visible = true;
98 //启用或禁用有关按钮
99 buttonStart.Enabled = false; buttonPauseContinue.Enabled = true; buttonStop.Enabled = true;
100 //改变按钮文字
101 buttonPauseContinue.Text = "暂停";
102 buttonStart.BackColor=buttonStart.BackColor == Color.Blue ? Color.Yellow : Color.Blue;
103 //冒号控制标志设置为true
104 _colonFlag = true;
105 //隐藏冒号
106 pictureBoxColon1.Image = GetResourceImage(" ");
107 pictureBoxColon2.Image = GetResourceImage(" ");
108
109 }
110
111 private void timer1_Tick(object sender, EventArgs e)
112 {
113 _nowsecond++;
114 int hour = _nowsecond / 3600;
115 int minute = (_nowsecond % 3600) / 60;
116 int second = (_nowsecond % 3600) % 60;
117
118 if(hour<=9)
119 labelHour.Text="0"+hour.ToString();
120 else labelHour.Text = hour.ToString();
121 if(minute<=9)
122 labelMinute.Text = "0" + minute.ToString();
123 else labelMinute.Text = minute.ToString();
124 if(second<=9)
125 labelSecond.Text = "0" + second.ToString();
126 else labelSecond.Text = second.ToString();
127 //显示当前的秒
128 this.pictureBoxSecond1.Image = GetResourceImage((second / 10).ToString());
129 this.pictureBoxSecond2.Image = GetResourceImage((second % 10).ToString());
130 //显示当前的分
131 this.pictureBoxMinute1.Image = GetResourceImage((minute / 10).ToString());
132 this.pictureBoxMinute2.Image = GetResourceImage((minute % 10).ToString());
133 //显示当前的小时
134 this.pictureBoxHour1.Image = GetResourceImage((hour / 10).ToString());
135 this.pictureBoxHour2.Image = GetResourceImage((hour % 10).ToString());
136
137 }
138
139 private void labelHour_Click(object sender, EventArgs e)
140 {
141
142 }
143
144 private void labelMinute_Click(object sender, EventArgs e)
145 {
146
147 }
148
149 private void labelSecond_Click(object sender, EventArgs e)
150 {
151
152 }
153
154 //Timer2定时器的Tick事件响应方法
155 private void timer2_Tick(object sender, EventArgs e)
156 {
157 //让中间的冒号闪烁起来
158 if (labelColon1.Visible == true)
159 {
160 labelColon1.Visible = false;
161 labelColon2.Visible = false;
162 }
163 else
164 {
165 labelColon1.Visible = true;
166 labelColon2.Visible = true;
167 }
168 //切换冒号显示控制标志
169 _colonFlag = !_colonFlag;
170
171 //判断冒号控制标志是否为true
172 if (_colonFlag == true)
173 {
174 pictureBoxColon1.Image = GetResourceImage(" ");
175 pictureBoxColon2.Image = GetResourceImage(" ");
176 }
177 else
178 {
179 pictureBoxColon1.Image = GetResourceImage(":");
180 pictureBoxColon2.Image = GetResourceImage(":");
181 }
182 }
183
184 private void buttonStart_MouseDown(object sender, MouseEventArgs e)
185 {
186 }
187
188 private void buttonStart_KeyPress(object sender, KeyPressEventArgs e)
189 {
190
191 }
192
193 private void Form1_Load(object sender, EventArgs e)
194 {
195 buttonStart.Enabled = true;
196 buttonPauseContinue.Enabled = false;
197 buttonStop.Enabled = false;
198 buttonPauseContinue.Text = "暂停";
199 labelColon1.Visible = true;
200 labelColon2.Visible = true;
201 label2.Visible = false;
202 //初始化所有ImageBox控件的初始位图
203 pictureBoxHour1.Image = GetResourceImage("0");
204 pictureBoxHour2.Image = GetResourceImage("0");
205 pictureBoxMinute1.Image = GetResourceImage("0");
206 pictureBoxMinute2.Image = GetResourceImage("0");
207 pictureBoxSecond1.Image = GetResourceImage("0");
208 pictureBoxSecond2.Image = GetResourceImage("0");
209 pictureBoxColon1.Image = GetResourceImage(":");
210 pictureBoxColon2.Image = GetResourceImage(":");
211
212 }
213
214 private void buttonStop_Click(object sender, EventArgs e)
215 {
216 _nowsecond = 0;
217 timer1.Enabled = false;
218 timer2.Enabled = false;
219 buttonStart.Enabled = true; buttonPauseContinue.Enabled = false; buttonStop.Enabled = false;
220 buttonPauseContinue.Text = "暂停";
221 labelColon2.Visible = true;
222 labelColon1.Visible = true;
223 buttonStart.BackColor = Color.Yellow;
224 labelHour.Text = "00";
225 labelMinute.Text = "00";
226 labelSecond.Text = "00";
227 label2.Visible = true;
228 //冒号控制标志设置为true
229 _colonFlag = true;
230 //显示冒号
231 pictureBoxColon1.Image = GetResourceImage(":");
232 pictureBoxColon2.Image = GetResourceImage(":");
233
234 //清空时间计数值(秒)
235 _nowsecond = 0;
236 pictureBoxHour1.Image = GetResourceImage("0");
237 pictureBoxHour2.Image = GetResourceImage("0");
238 pictureBoxMinute1.Image = GetResourceImage("0");
239 pictureBoxMinute2.Image = GetResourceImage("0");
240 pictureBoxSecond1.Image = GetResourceImage("0");
241 pictureBoxSecond2.Image = GetResourceImage("0");
242 pictureBoxColon1.Image = GetResourceImage(":");
243 pictureBoxColon2.Image = GetResourceImage(":");
244 }
245
246 private void buttonPauseContinue_Click(object sender, EventArgs e)
247 {
248 if (buttonPauseContinue.Text== "暂停")
249 {
250 labelColon2.Visible = true;
251 labelColon1.Visible = true;
252 timer1.Enabled = false;
253 timer2.Enabled = false;
254 buttonPauseContinue.Text = "继续";
255 }
256 else
257 {
258 labelColon2.Visible = true;
259 labelColon1.Visible = true;
260 timer1.Enabled = true;
261 timer2.Enabled = true;
262 buttonPauseContinue.Text = "暂停";
263 }
264 pictureBoxColon1.Image = GetResourceImage(":");
265 pictureBoxColon2.Image = GetResourceImage(":");
266 }
267
268 private void Form1_Move(object sender, EventArgs e)
269 {
270 //停靠屏幕左右边框
271 int screenRight = Screen.PrimaryScreen.Bounds.Right;
272 int formRight = this.Left + this.Size.Width;
273 if (Math.Abs(screenRight - formRight) <= 100)
274 this.Left = screenRight - this.Size.Width;
275 if (Math.Abs(this.Left) <= 100)
276 this.Left = 0;
277
278 //停靠屏幕上下边框
279 int screenBottom = Screen.PrimaryScreen.Bounds.Bottom;
280 int formBottom = this.Top + this.Size.Height;
281 if (Math.Abs(screenBottom - formBottom) <= 60)
282 this.Top = screenBottom - this.Size.Height;
283 if (Math.Abs(this.Top) <= 100)
284 this.Top = 0;
285 }
286
287 private void pictureBox2_Click(object sender, EventArgs e)
288 {
289
290 }
291
292 private void pictureBox5_Click(object sender, EventArgs e)
293 {
294
295 }
296
297 private void pictureBoxHour1_Click(object sender, EventArgs e)
298 {
299
300 }
301 }
302 }