资源简介
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
- 上一篇:MFC写的八皇后演示程序
- 下一篇:VC++多文档程序可新建文本编辑器和画图程序
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论