读书人

模拟画一个时钟的有关问题

发布时间: 2012-04-01 17:23:46 作者: rapoo

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

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

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

读书人网 >.NET

热点推荐