If Second(Now) = LastSecond Then Exit Sub
    LastSecond = Second(Now)
    '定位时针,分针,秒针
    Angle = -0.5236 * (15 - (Hour(Now) + Minute(Now) / 60))
    Text1.Text = CStr(Angle)
    hourLine.X2 = Cos(Angle) * 500 + X0
    hourLine.Y2 = Sin(Angle) * 500 + Y0
    Angle = -0.1047 * (75 - (Minute(Now) + Second(Now) / 60))
    Text2.Text = CStr(Angle)
    minuteLine.X2 = Cos(Angle) * 700 + X0
    minuteLine.Y2 = Sin(Angle) * 700 + Y0
    Angle = -0.1047 * (75 - Second(Now))
    Text3.Text = CStr(Angle)
    secondLine.X2 = Cos(Angle) * 800 + X0
    secondLine.Y2 = Sin(Angle) * 800 + Y0
感觉计算时钟指针角度的方法很诡异啊,具体什么意思呢?高手给讲解以下,不胜感激

解决方案 »

  1.   

    这个时钟用了一个timer不停的重绘三个指针的位置
      

  2.   

    能不能具体解释下-0.5236 * (15 - (Hour(Now) + Minute(Now) / 60))
    是什么意思?为什么要这么定为呢?实在是不明白。这个0.5236是什么?15又是什么?为什么要用15减?为什么要乘-0.5236
      

  3.   

    其实是这样的因为时钟一共有60个小格,而转一周是360度,所以每一小格就是6度。
      设x (360/6)=(2*pi/x)。得出x为0.1047 。而0.5236就为0.1047的一半。××××××××××
      至于15这个数的问题我认为可以把-0.5236 * (15 - (Hour(Now) + Minute(Now) / 60))看成  (-0.5236*15)再加上  (- (Hour(Now) + Minute(Now) / 60))*(-0.5236)。这是小学知识了。
    Sin(-0.5236*15)恰好约等于-1。上面还有什么Cos(75* (-0.1047 ))也等于负一。所以75和15只不过是凑数,你也可以换其他的数试试(如27)