两个函数搞定:
[mw_shl_code=c,true]//画圆形指针表盘
//x,y:坐标中心点
//size:表盘大小(直径)
//d:表盘分割,秒钟的高度
void calendar_circle_clock_drawpanel(u16 x,u16 y,u16 size,u16 d)
{
u16 r=size/2;//得到半径
u16 sx=x-r;
u16 sy=y-r;
u16 px0,px1;
u16 py0,py1;
u16 i;
gui_fill_circle(x,y,r,WHITE); //画外圈
gui_fill_circle(x,y,r-4,BLACK); //画内圈
for(i=0;i<60;i++)//画秒钟格
{
px0=sx+r+(r-4)*sin((app_pi/30)*i);
py0=sy+r-(r-4)*cos((app_pi/30)*i);
px1=sx+r+(r-d)*sin((app_pi/30)*i);
py1=sy+r-(r-d)*cos((app_pi/30)*i);
gui_draw_bline1(px0,py0,px1,py1,0,WHITE);
}
for(i=0;i<12;i++)//画小时格
{
px0=sx+r+(r-5)*sin((app_pi/6)*i);
py0=sy+r-(r-5)*cos((app_pi/6)*i);
px1=sx+r+(r-d)*sin((app_pi/6)*i);
py1=sy+r-(r-d)*cos((app_pi/6)*i);
gui_draw_bline1(px0,py0,px1,py1,2,YELLOW);
}
for(i=0;i<4;i++)//画3小时格
{
px0=sx+r+(r-5)*sin((app_pi/2)*i);
py0=sy+r-(r-5)*cos((app_pi/2)*i);
px1=sx+r+(r-d-3)*sin((app_pi/2)*i);
py1=sy+r-(r-d-3)*cos((app_pi/2)*i);
gui_draw_bline1(px0,py0,px1,py1,2,YELLOW);
}
gui_fill_circle(x,y,d/2,WHITE); //画中心圈
}
//显示时间
//x,y:坐标中心点
//size:表盘大小(直径)
//d:表盘分割,秒钟的高度
//hour:时钟
//min:分钟
//sec:秒钟
void calendar_circle_clock_showtime(u16 x,u16 y,u16 size,u16 d,u8 hour,u8 min,u8 sec)
{
static u8 oldhour=0; //最近一次进入该函数的时分秒信息
static u8 oldmin=0;
static u8 oldsec=0;
u16 r=size/2;//得到半径
u16 sx=x-r;
u16 sy=y-r;
u16 px0,px1;
u16 py0,py1;
u8 r1;
if(hour>11)hour-=12;
///////////////////////////////////////////////
//清除小时
r1=d/2+4;
//清除上一次的数据
px0=sx+r+(r-3*d-7)*sin((app_pi/6)*oldhour);
py0=sy+r-(r-3*d-7)*cos((app_pi/6)*oldhour);
px1=sx+r+r1*sin((app_pi/6)*oldhour);
py1=sy+r-r1*cos((app_pi/6)*oldhour);
gui_draw_bline1(px0,py0,px1,py1,2,BLACK);
//清除分钟
r1=d/2+3;
//清除上一次的数据
px0=sx+r+(r-2*d-7)*sin((app_pi/30)*oldmin);
py0=sy+r-(r-2*d-7)*cos((app_pi/30)*oldmin);
px1=sx+r+r1*sin((app_pi/30)*oldmin);
py1=sy+r-r1*cos((app_pi/30)*oldmin);
gui_draw_bline1(px0,py0,px1,py1,1,BLACK);
//清除秒钟
r1=d/2+3;
//清除上一次的数据
px0=sx+r+(r-d-7)*sin((app_pi/30)*oldsec);
py0=sy+r-(r-d-7)*cos((app_pi/30)*oldsec);
px1=sx+r+r1*sin((app_pi/30)*oldsec);
py1=sy+r-r1*cos((app_pi/30)*oldsec);
gui_draw_bline1(px0,py0,px1,py1,0,BLACK);
///////////////////////////////////////////////
//显示小时
r1=d/2+4;
//显示新的时钟
px0=sx+r+(r-3*d-7)*sin((app_pi/6)*hour);
py0=sy+r-(r-3*d-7)*cos((app_pi/6)*hour);
px1=sx+r+r1*sin((app_pi/6)*hour);
py1=sy+r-r1*cos((app_pi/6)*hour);
gui_draw_bline1(px0,py0,px1,py1,2,YELLOW);
//显示分钟
r1=d/2+3;
//显示新的分钟
px0=sx+r+(r-2*d-7)*sin((app_pi/30)*min);
py0=sy+r-(r-2*d-7)*cos((app_pi/30)*min);
px1=sx+r+r1*sin((app_pi/30)*min);
py1=sy+r-r1*cos((app_pi/30)*min);
gui_draw_bline1(px0,py0,px1,py1,1,GREEN);
//显示秒钟
r1=d/2+3;
//显示新的秒钟
px0=sx+r+(r-d-7)*sin((app_pi/30)*sec);
py0=sy+r-(r-d-7)*cos((app_pi/30)*sec);
px1=sx+r+r1*sin((app_pi/30)*sec);
py1=sy+r-r1*cos((app_pi/30)*sec);
gui_draw_bline1(px0,py0,px1,py1,0,RED);
oldhour=hour; //保存时
oldmin=min; //保存分
oldsec=sec; //保存秒
} [/mw_shl_code]
|