+ -
当前位置:首页 → 问答吧 → 模拟画一个时钟的问题

模拟画一个时钟的问题

时间:2011-12-15

来源:互联网

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)));这句的意思是什么,不太明白
另外怎么画一圆

作者: chenfujun123   发布时间: 2011-12-15

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

作者: funxu   发布时间: 2011-12-16

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

作者: kaikai_kk   发布时间: 2011-12-16