procedure TForm1.Timer1Timer(Sender: TObject);
var
  MyNow      : TDateTime;
  Hour, Min, Sec, mSec  : Word;
  vh, vm, vs : Real;
begin
   Self.Refresh;
   MyNow := Now;
   DecodeTime(MyNow,Hour,Min,Sec,mSec);
   vh := Hour/12.0*2*Pi;       //小时数
   vm := Min/60.0*2*Pi;        //分钟数
   vs := Sec/60.0*2*Pi;    //秒    with Canvas do
    begin
    Pen.Width:=4;                  //画时针
    Pen.Color := clBlue;
    MoveTo(100,100);
    LineTo(100+Round(25*Sin(vh)),100-Round(25*Cos(vh)));    Pen.Width:=2;                  //画分针
    Pen.Color := clBlack;
    MoveTo(100,100);
    LineTo(100+Round(45*Sin(vm)),100-Round(45*Cos(vm)));    Pen.Width:=1;                     //画秒针
    Pen.Color := clRed;
    MoveTo(100,100);
    lineto(100+round(60*sin(vs)),100-round(60*cos(vs)));
  end;end;// lineto(100+round(60*sin(vs)),100-round(60*cos(vs)));这句的意思是什么,不太明白
另外怎么画一圆

解决方案 »

  1.   

    红色是画线
    画圆 canvas.ellipse()
      

  2.   

    和上面的一样,都是计算坐标,然后画线到这个坐标
    vs := Sec/60.0*2*Pi;
    100+60*sin(vs)这些计算公式慢慢研究吧,初中的三角知识运用在程序里面
      

  3.   


      canvas.ellipse(40,40,160,160);
      

  4.   

        with   Canvas   do
        begin
            brush.Style:=bsClear;
            pen.color:=clred;
            Ellipse(41,41,151,151);
            end;
    //怎么调整这个圆的位置,比如想放到MoveTo(100,100)这个位置
      

  5.   

    Ellipse(x1,y1,x2,y2)
    可以这样计算,先确定圆心x,y,再确定半径r
    x1:=x-r
    y1:=x-rx2:=x+r
    y2:=x+r
    画出来就是圆或者x2-x1=y2-y1成立也是圆
      

  6.   

    Ellipse(41,41,151,151);
    41,41,151,151这个坐标定义是一个正方形,正方形的中心在100,100很容易就算出来的。
    Ellipse(41,41,151,151);这个语句是在一个矩形范围内画圆,可以正圆也可是椭圆。它的圆心就矩形的中心点。
    canvas.ellipse(40,40,160,160);这个圆点就是100,100
      

  7.   

    http://hi.csdn.net/attachment/201112/16/10213726_1324019388QD0Q.jpg
      

  8.   


    你没仔细看回复?
    你的程序圆心在100,100坐标上,公式套上去,圆就出来了,r越大,圆就越大ellipse(100-r,100-r,100+r,100+r);
      

  9.   

     Ellipse(170,50,300,180);
    原来170代表LEFT  50代表TOP,300代码WITH,180代表HITH,这样的话圆心位置就是
    300-170=180-50X=170+(300-170)/2=235
    Y=50+(180-50)/2=110这样圆就定位在:23,115的位置了