vc 模拟数字时钟
用VC模拟一个数字时钟,大家有没有什么好的实现算法呀?
要求如下:
1.24小时制,开机读取系统时间
2.用图片显示时间(有十张图片分别对应0~9十个数字),如何在时间变化时变化响应图片。
[解决办法]
TC版的,仅供参考
#include <graphics.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dos.h>#include <conio.h>#include <time.h>#include <math.h>time_t t;char timestr1[30];//DDD MMM dd hh:mm:ss YYYYchar timestr2[30];//DDD MMM dd hh:mm:ss YYYYchar hhmmss[9];int graphdriver,graphmode,page;int i,xo,yo,r0,r1,r2,r3,r4,r5,r6,r7;int x1,y1,x2,y2;int hh,mm,ss;double c,s;int xasp,yasp;void main() { xo=60;yo=60; r0=5; //轴 r1=20;//时针 r2=36;//分针 r3=45;//秒针 r4=50;//时刻度 r5=53;//分刻度 r6=55;//刻度外 r7=59;//表盘 graphdriver=VGA; graphmode=VGAMED; initgraph(&graphdriver,&graphmode,"D:\\BC\\BGI"); getaspectratio(&xasp, &yasp); page=0; timestr2[0]=0; while (1) { if (kbhit()) break; time(&t); strcpy(timestr1,ctime(&t)); if (strcmp(timestr1,timestr2)) { strcpy(timestr2,timestr1); hh=atoi(timestr2+11); mm=atoi(timestr2+14); ss=atoi(timestr2+17); setvisualpage(page); setactivepage(1-page); cleardevice(); sprintf(hhmmss,"%02d:%02d:%02d",hh,mm,ss); outtextxy(28,0,hhmmss); pieslice(xo,yo,0,360,r0); circle(xo,yo,r7); for (i=0;i<60;i++) { c=cos(i*6*3.14159265/180); s=sin(i*6*3.14159265/180)*xasp/yasp; if (0==(i%5)) { x1=xo+r4*c; y1=yo+r4*s; } else { x1=xo+r5*c; y1=yo+r5*s; } x2=xo+r6*c; y2=yo+r6*s; line(x1,y1,x2,y2); if (((hh%12)*5+mm/12+45)%60==i) { x2=xo+r1*c; y2=yo+r1*s; setlinestyle(0,-1,3); line(xo,yo,x2,y2); setlinestyle(0,-1,1); } if ((mm+45)%60==i) { x2=xo+r2*c; y2=yo+r2*s; setlinestyle(0,-1,3); line(xo,yo,x2,y2); setlinestyle(0,-1,1); } if ((ss+45)%60==i) { x2=xo+r3*c; y2=yo+r3*s; line(xo,yo,x2,y2); } } page=1-page; } delay(100); } getch(); closegraph();}