资源简介

c++利用easyx图形库做的还不错的时钟!

资源截图

代码片段和文件信息

#include “graphics.h“
#include “conio.h“
#include “stdio.h“
#include “math.h“

#define PI 3.1415927
#define W_WIDTH 640
#define W_HEIGHT 480
void main()
{
double a_scale=0;//画刻度时的弧度
int n_scale=0;//刻度计数
int num_scale=0;//刻度数
double a_increment=6*2*PI/360;//画刻度时的增量
void draw_line(int secondint minuteint hour);//画指针函数申明

initgraph(W_WIDTHW_HEIGHT);//界面初始化
setlinecolor(GREEN);

/*添加填充图片*/
IMAGE img;
loadimage(&img_T(“timer.jpg“));
setfillstyle(BS_DIBPATTERNNULL&img);

fillcircle(W_WIDTH/2W_HEIGHT/2160);//绘制钟表大小

/*画钟表刻度*/
for(a_scale;a_scale<=2*PI;a_scale+=a_increment)
{
n_scale++;
if (!(n_scale%5-1))
{
line(W_WIDTH/2+(int)(140*sin(a_scale))W_HEIGHT/2-(int)(140*cos(a_scale))
W_WIDTH/2+(int)(160*sin(a_scale))W_HEIGHT/2-(int)(160*cos(a_scale)));
}
else
{
line(W_WIDTH/2+(int)(150*sin(a_scale))W_HEIGHT/2-(int)(150*cos(a_scale))
W_WIDTH/2+(int)(160*sin(a_scale))W_HEIGHT/2-(int)(160*cos(a_scale)));
}

}

/*写钟表数字*/
for(a_scale=0;a_scale<=2*PI;a_scale+=a_increment*5)
{
setbkmode(TRANSPARENT);
settextcolor(RED);
char c[2];
sprintf(c“%d“num_scale);//将数字类型转化成字符类型
outtextxy(W_WIDTH/2+(int)(120*sin(a_scale))W_HEIGHT/2-(int)(120*cos(a_scale))c);
num_scale++;
}

SYSTEMTIME t_time;//定义系统时间
setwritemode(R2_XORPEN);//设置前景的二元光栅操作模式为R2_XORPEN(屏幕颜色XOR当前颜色)
while (!kbhit())//判断是否有键盘输入
{
GetLocalTime(&t_time);
draw_line(t_time.wSecondt_time.wMinutet_time.wHour);//绘制指针
Sleep(1000);
draw_line(t_time.wSecondt_time.wMinutet_time.wHour);//重绘XOR相消,变为背景色
}
closegraph();
}

void draw_line(int secondint minuteint hour)
{
double a_seconda_minutea_hour;//指针弧度
int x_lsecondy_lsecondx_ssecondy_ssecondx_minutey_minutex_houry_hour;//指针端点位置
int r_lsecond=120r_ssecond=20r_minute=100r_hour=60;//指针半径

/*指针弧度计算*/
a_second=second*2*PI/60;
a_minute=minute*2*PI/60+a_second/60;
a_hour=hour*2*PI/12+a_minute/12;

/*指针端点坐标计算*/
/*秒针远端点*/
x_lsecond=W_WIDTH/2+(int)(r_lsecond*sin(a_second));
y_lsecond=W_HEIGHT/2-(int)(r_lsecond*cos(a_second));

/*秒针近端点*/
x_ssecond=W_WIDTH/2+(int)(r_ssecond*sin(a_second+PI));
y_ssecond=W_HEIGHT/2-(int)(r_ssecond*cos(a_second+PI));

x_minute=W_WIDTH/2+(int)(r_minute*sin(a_minute));
y_minute=W_HEIGHT/2-(int)(r_minute*cos(a_minute));

x_hour=W_WIDTH/2+(int)(r_hour*sin(a_hour));
y_hour=W_HEIGHT/2-(int)(r_hour*cos(a_hour));

/*指针画线*/
setlinecolor(RED);
setlinestyle(PS_SOLID2NULL);
line(W_WIDTH/2W_HEIGHT/2x_lsecondy_lsecond);
line(W_WIDTH/2W_HEIGHT/2x_ssecondy_ssecond);

setlinecolor(YELLOW);
setlinestyle(PS_SOLID4NULL);
line(W_WIDTH/2W_HEIGHT/2x_minutey_minute);

setlinecolor(GREEN);
setlinestyle(PS_SOLID8NULL);
line(W_WIDTH/2W_HEIGHT/2x_houry_hour);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     282704  2013-11-28 09:23  timer\Debug\timer.exe

     文件     416984  2013-11-28 09:23  timer\Debug\timer.ilk

     文件      18697  2013-11-28 09:23  timer\Debug\timer.obj

    I.A....   4037004  2013-11-26 13:07  timer\Debug\timer.pch

     文件     623616  2013-11-28 09:23  timer\Debug\timer.pdb

     文件     156672  2013-11-28 09:23  timer\Debug\vc60.idb

     文件      77824  2013-11-28 09:23  timer\Debug\vc60.pdb

     文件       2994  2013-11-28 09:23  timer\timer.cpp

     文件       3389  2013-11-28 09:23  timer\timer.dsp

     文件        516  2013-11-28 09:23  timer\timer.dsw

     文件     374228  2013-09-09 18:59  timer\timer.jpg

     文件      41984  2013-11-28 09:23  timer\timer.ncb

     文件      48640  2013-11-28 09:23  timer\timer.opt

     文件        747  2013-11-28 09:23  timer\timer.plg

     目录          0  2013-11-28 09:23  timer\Debug

     目录          0  2013-11-28 09:23  timer

----------- ---------  ---------- -----  ----

              6085999                    16


评论

共有 条评论