。。如标题     不会算了。 

解决方案 »

  1.   

    这是我原来写的时钟程序,里面有有关速算法,你看下(不过是用C++写的,你参考下)
    clockRadius=clockRadius*0.9;//指针半径稍小于圆半径
    double keduDRadius=clockRadius*0.92;
    double keduXRadius=clockRadius*0.95; double hourRadius=clockRadius*0.5;//时针半径
    double minuteRadius=clockRadius*0.7;//分针半径
    double secondRadius=clockRadius*0.9;//秒针半径 CPen clockPen(PS_SOLID,3,RGB(255,0,0));//自定义画笔
    CPen *poldpen=pDC->SelectObject(&clockPen);//把GDI对象选入设备设备描述表中 //标注大刻度1~12
    for(int i=1;i<=12;i++)
    {
    pDC->MoveTo(centerX+keduDRadius*cos(i*30*M_PI/180),
    centerY+keduDRadius*sin(i*30*M_PI/180));
    pDC->LineTo(centerX+clockRadius*cos(i*30*M_PI/180),
    centerY+clockRadius*sin(i*30*M_PI/180));
    }
    //标注小刻度1~60
    for(int j=1;j<=60;j++)
    {
    pDC->MoveTo(centerX+keduXRadius*cos(j*6*M_PI/180),
    centerY+keduXRadius*sin(j*6*M_PI/180));
    pDC->LineTo (centerX+keduXRadius*cos(j*6*M_PI/180),
    centerY+keduXRadius*sin(j*6*M_PI/180));
    }
    pDC->SelectObject(poldpen);//还原画笔
    //调节时、分、秒针角度显示关系
    double secondRadians=m_second*2*M_PI/60;//秒走过的弧度
    double minuteRadians=m_minute*2*M_PI/60+secondRadians/60;//相应分针走过的弧度
    double hourRadians=m_hour*2*M_PI/12+(minuteRadians/12);//相应时针走过的弧度
    //依照计算出的角度画出时、分、秒针
    CPen secondPen(PS_SOLID,2,RGB(0,255,0));
    poldpen=pDC->SelectObject(&secondPen);
    pDC->MoveTo(centerX,centerY);
    pDC->LineTo(centerX+double(secondRadius)*sin(secondRadians),
    centerY-double(secondRadius)*cos(secondRadians));
    pDC->SelectObject(poldpen); CPen minutePen(PS_SOLID,4,RGB(255,0,0));
    poldpen=pDC->SelectObject(&minutePen);
    pDC->MoveTo(centerX,centerY);
    pDC->LineTo(centerX+double(minuteRadius)*sin(minuteRadians),
    centerY-double(minuteRadius)*cos(minuteRadians));
    pDC->SelectObject(poldpen); CPen hourPen(PS_SOLID,6,RGB(0,0,255));
    poldpen=pDC->SelectObject(&hourPen);
    pDC->MoveTo(centerX,centerY);
    pDC->LineTo(centerX+double(hourRadius)*sin(hourRadians),
    centerY-double(hourRadius)*cos(hourRadians));
    pDC->SelectObject(poldpen);