图形钟表的实现

本文介绍了一个使用C语言和EasyX图形库制作的简单图形钟表程序。该程序能够实时显示当前时间,并通过不断刷新屏幕来更新时钟指针的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下午突然对于做图形钟表来了兴趣,就用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;
}
运行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值