资源简介
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++多文档程序可新建文本编辑器和画图程序
相关资源
- VC++多文档程序可新建文本编辑器和画
- MFC写的八皇后演示程序
- 用于人脸识别的lbp算法C++源码
- mfc工资管理系统.rar
- C++程序设计谭浩强100%完整高清版·清
- C++面向对象程序设计谭浩强 完整版
- C++进行图像预处理代码
- c++与Qt使用数据库MySQL进行数据的增删
- C++调用海康工业相机SDK采集图像的简
- 直线段的裁剪 vc++ MFC
- c++ mysql学生信息管理系统
- 双边滤波器C++ 代码
- 车牌识别与定位C++
- C++ > (开源) Ring3下的DLL注入工具
- 足球机器人仿真代码 C++
- AES加密解密算法实现C、C++
- 单台AGV最短路径规划,两台AGV路径自
- vC++编程精选100
- 工资管理系统 mfc c++
- 图书馆管理系统 c++ mfc
- Design Patterns in Modern C++现代C++程序设计
- 坦克大战C语言easyx图形插件源代码
- C++实现简单聊天应用
- 二叉树的遍历及应用.ppt
- C++STL源码剖析 中文高清非扫描版
- C语言课设,学生证管理系统
- C++语言程序设计上机实验课所有实验
- Wong-Trinder圆点定位算子
- VC++头文件库
- 使用C++卫星坐标计算
评论
共有 条评论