首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vc 模拟数字时钟解决方法

2012-06-19 
vc 模拟数字时钟用VC模拟一个数字时钟,大家有没有什么好的实现算法呀?要求如下:1.24小时制,开机读取系统时

vc 模拟数字时钟
用VC模拟一个数字时钟,大家有没有什么好的实现算法呀?
要求如下:
1.24小时制,开机读取系统时间
2.用图片显示时间(有十张图片分别对应0~9十个数字),如何在时间变化时变化响应图片。

[解决办法]
TC版的,仅供参考

C/C++ code
#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();} 

热点排行