求助大神vc++上用C语言编写模拟时钟
答案:1 悬赏:60 手机版
解决时间 2021-04-02 18:24
- 提问者网友:雪舞兮
- 2021-04-01 22:31
求助大神vc++上用C语言编写模拟时钟
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2021-04-01 23:44
#include
#include
#include
#include
#define PI 3.14159
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void Draw(int hour, int minute, int second)
{
double a_hour, a_min, a_sec; // 时、分、秒针的弧度值
int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的末端位置
// 计算时、分、秒针的弧度值
a_sec = second * 2 * PI / 60;
a_min = minute * 2 * PI / 60 + a_sec / 60;
a_hour= hour * 2 * PI / 12 + a_min / 12;
// 计算时、分、秒针的末端位置
x_sec = 320 + (int)(120 * sin(a_sec));
y_sec = 240 - (int)(120 * cos(a_sec));
x_min = 320 + (int)(100 * sin(a_min));
y_min = 240 - (int)(100 * cos(a_min));
x_hour= 320 + (int)(70 * sin(a_hour));
y_hour= 240 - (int)(70 * cos(a_hour));
// 画时针
setlinestyle(PS_SOLID, NULL, 10);
setcolor(WHITE);
line(320, 240, x_hour, y_hour);
// 画分针
setlinestyle(PS_SOLID, NULL, 6);
setcolor(LIGHTGRAY);
line(320, 240, x_min, y_min);
// 画秒针
setlinestyle(PS_SOLID, NULL, 2);
setcolor(RED);
line(320, 240, x_sec, y_sec);
}
void main()
{
int i,l,x1,x2,y1,y2;
initgraph(640, 480); // 初始化 640 x 480 的绘图窗口 // 绘制一个简单的表盘
circle(320, 240, 2);
circle(320, 240, 160);
outtextxy(296, 300, "Quan");// 设置 XOR 绘图模式
for(i=0;i<60;i++)
{
if(i%5==0)
l=15;
else
l=5;
x1=160*sin(i*6*PI/180)+320;
y1=160*cos(i*6*PI/180)+240;
x2=(160-l)*sin(i*6*PI/180)+320;
y2=(160-l)*cos(i*6*PI/180)+240;
line(x1,y1,x2,y2);
}
setwritemode(R2_XORPEN); // 设置 XOR 绘图模式
// 绘制表针
SYSTEMTIME ti; // 定义变量保存当前时间
while(!kbhit()) // 按任意键退出钟表程序
{
GetLocalTime(&ti);
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 画表针
Sleep(1000); // 延时 1 秒
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 擦表针(擦表针和
}
closegraph();
}
#include
#include
#include
#define PI 3.14159
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void Draw(int hour, int minute, int second)
{
double a_hour, a_min, a_sec; // 时、分、秒针的弧度值
int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的末端位置
// 计算时、分、秒针的弧度值
a_sec = second * 2 * PI / 60;
a_min = minute * 2 * PI / 60 + a_sec / 60;
a_hour= hour * 2 * PI / 12 + a_min / 12;
// 计算时、分、秒针的末端位置
x_sec = 320 + (int)(120 * sin(a_sec));
y_sec = 240 - (int)(120 * cos(a_sec));
x_min = 320 + (int)(100 * sin(a_min));
y_min = 240 - (int)(100 * cos(a_min));
x_hour= 320 + (int)(70 * sin(a_hour));
y_hour= 240 - (int)(70 * cos(a_hour));
// 画时针
setlinestyle(PS_SOLID, NULL, 10);
setcolor(WHITE);
line(320, 240, x_hour, y_hour);
// 画分针
setlinestyle(PS_SOLID, NULL, 6);
setcolor(LIGHTGRAY);
line(320, 240, x_min, y_min);
// 画秒针
setlinestyle(PS_SOLID, NULL, 2);
setcolor(RED);
line(320, 240, x_sec, y_sec);
}
void main()
{
int i,l,x1,x2,y1,y2;
initgraph(640, 480); // 初始化 640 x 480 的绘图窗口 // 绘制一个简单的表盘
circle(320, 240, 2);
circle(320, 240, 160);
outtextxy(296, 300, "Quan");// 设置 XOR 绘图模式
for(i=0;i<60;i++)
{
if(i%5==0)
l=15;
else
l=5;
x1=160*sin(i*6*PI/180)+320;
y1=160*cos(i*6*PI/180)+240;
x2=(160-l)*sin(i*6*PI/180)+320;
y2=(160-l)*cos(i*6*PI/180)+240;
line(x1,y1,x2,y2);
}
setwritemode(R2_XORPEN); // 设置 XOR 绘图模式
// 绘制表针
SYSTEMTIME ti; // 定义变量保存当前时间
while(!kbhit()) // 按任意键退出钟表程序
{
GetLocalTime(&ti);
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 画表针
Sleep(1000); // 延时 1 秒
Draw(ti.wHour, ti.wMinute, ti.wSecond); // 擦表针(擦表针和
}
closegraph();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯