下午突然对于做图形钟表来了兴趣,就用c语言实现了一番,小有成就感,特写博客一贴,以此分享:
用到的预备知识:
1.获取当前系统时间:头文件:#include <time.h>定义函数:struct tm *gmtime(const time_t *timep);函数说明:gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm 返回。举例:
#include <time.h>
main(){
char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
struct tm *p;
time(&timep);
p = gmtime(&timep);
printf("%d%d%d", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday);
printf("%s%d;%d;%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);
}
2.EasyX图形库的使用:(自行上网了解,较简单,此处略)。好了,我就直接张贴代码了,嘿嘿有图有真相
#include <graphics.h>
#include <iostream>
#include <string>
#include <ctime>
#include <stdio.h>
using namespace std;
#define PI 3.1415926
void fun()
{
outtextxy(-20,-50,_T("荆体凯"));//指定位置设置文字
outtextxy(-20,40,_T("1 9 9 6"));
outtextxy(0+85,-7,_T("3"));
outtextxy(0-85,-7,_T("9"));
outtextxy(0-3,-7+85,_T("6"));
outtextxy(-7,-7-85,_T("12"));
circle(0,0,100);//画圆
circle(0,0,3);
line(0+93,0,0+100,0);//画线
line(0,0+93,0,0+100);
line(0,0-93,0,0-100);
line(0-93,0,0-100,0);
double a = 0,b = 0;
//设置60个刻度
while ( a< 2 * PI)
{
line(0+96*cos(a),0+96*sin(b),0+100*cos(a),0+100*sin(b));
a = a + (6.0/180.0*PI);
b = b +(6.0/180.0*PI);
}
a = b = 0;//每次别忘记置零
}
int main()
{
time_t rawtime;//定义一个时间变量
struct tm * timeinfo;//时间结构体指针
//printf("%d %d %d ",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
initgraph(640,480);//初始化窗口大小
setorigin(320,240);//将坐标原点设置为(320,240)
double n = 0 ;
int i = 1;
double xSecond,ySecond,xMin,yMin,xHour,yHour;
while ( i )
{
fun();//由于每次清屏,所以要重新绘制
time ( &rawtime );//
timeinfo = localtime ( &rawtime );
xSecond = (timeinfo->tm_sec*6.0-90)/180.0*PI;
ySecond = (timeinfo->tm_sec*6.0-90)/180.0*PI;
setcolor(BLUE);
line(0,0,0+100*cos(xSecond),0+100*sin(ySecond));//画秒针
setcolor(WHITE);
//timeinfo->tm_min %= 12;
xMin = (timeinfo->tm_min *6.0-90)/180.0*PI;
yMin = (timeinfo->tm_min*6.0-90)/180.0*PI;
setcolor(RED);
line(0,0,0+80*cos(xMin),0+80*sin(yMin));//画分针
setcolor(WHITE);
timeinfo->tm_hour = 9;
xHour = ((timeinfo->tm_min/60.0 + timeinfo->tm_hour )*5*6.0-90)/180.0*PI;
yHour = ((timeinfo->tm_min/60.0 + timeinfo->tm_hour)*5*6.0-90)/180.0*PI;
setcolor(YELLOW);
line(0,0,0+50*cos(xHour),0+50*sin(yHour));//画时针
setcolor(WHITE);
Sleep(1000);
cleardevice();//清屏
}
getchar();
return 0;
}
运行结果: