前言
使用C语言绘制一个简单的秒表,是实现简单的动态刷新功能,没有使用复杂的算法,只有一些常用的绘图函数。简单易懂,适合新手小白学习。该程序还存在一些缺陷,可以进一步完善和美化。
源码
///////////////////////////////////////////////////
// 程序名称:C语言绘制秒表
// 编译环境:Mictosoft Visual Studio 2022, EasyX_20211109
// 作 者:luoyh <2864292458@qq.com>
// 公 众 号:C语言研究
// 最后修改:2022-9-2
//
int main()
{
initgraph(640, 480);
setbkcolor(RGB(232, 216, 242));
cleardevice();
// 按键
setfillcolor(RGB(181, 49, 28));
setlinecolor(BLACK);
setlinestyle(PS_SOLID, 3);
POINT pts[] = { {391,121}, {431,156}, {408,186},{367,149} };
fillpolygon(pts, 4);
// 齿轮 用填充矩形表示
setfillcolor(RGB(234, 237, 232));
fillrectangle(305, 100, 335, 147);
fillroundrect(293, 89, 347, 113, 8, 8);
for (int i = 1; i < 5; i++)
{
line(293 + 11 * i, 89, 293 + 11 * i, 97);
line(293 + 11 * i, 106, 293 + 11 * i, 113);
}
// 表盘
setfillcolor(RGB(101, 101, 101));
solidcircle(321, 250, 124);
circle(321, 250, 125);
setlinecolor(RGB(27, 124, 221));
setlinestyle(PS_SOLID, 8);
circle(321, 250, 119);
setlinestyle(PS_SOLID, 3);
setlinecolor(BLACK);
circle(321, 250, 116);
// 绘制显示器
int times = 0; // 毫秒
int S = 0; // 秒
int M = 0; // 分
BeginBatchDraw();
while (true)
{
setfillcolor(RGB(15, 18, 9));
fillroundrect(249, 217, 388, 281, 8, 8);
// 显示时间
settextcolor(WHITE);
setbkmode(TRANSPARENT);
settextstyle(30, 0, _T("宋体"));
RECT r = { 249,217,388,281 };
TCHAR str[25];
// 这里需要判断一下要以那种格式输出
if (M < 10 && S < 10)
{
_stprintf_s(str, _T("0%d:0%d.%d"), M, S, times);
}
if (M < 10 && S>10)
{
_stprintf_s(str, _T("0%d:%d.%d"), M, S, times);
}
drawtext(str, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
if (times > 100)
{
S++;
times = 0;
}
if (S > 60)
{
M++;
S = 0;
}
times++;
FlushBatchDraw();
Sleep(1);
}
EndBatchDraw();
_getch();
return 0;
}
运行效果
编写过程