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)));这句的意思是什么,不太明白
另外怎么画一圆
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)));这句的意思是什么,不太明白
另外怎么画一圆
解决方案 »
- 有没有办法在触发完某事件之后自动执行一个procedure?
- 为什么我做好的帮助文件(chm) 总是找不到链接?
- string和longint类型之间如何转换?
- 输入法窗口总是被ComboBox的下拉框挡住,怎么办?
- 急聘全职Delphi程序员(深圳)
- 用delphi做的一个组件不能在asp里createobject,vb里可以,请教了
- ******** 小弟要找工作了,请大家帮帮忙!散分!!!********
- Access用的是哪种SQL语言??
- 谁知道Delphi的project\project opation表单是怎样做出来的?
- 如何取得CPU的序列号?
- 多线程断点调试
- delphi 7调用Java axis2写的webservice,本机开发环境下可以使用了,换台机器就行了?
画圆 canvas.ellipse()
vs := Sec/60.0*2*Pi;
100+60*sin(vs)这些计算公式慢慢研究吧,初中的三角知识运用在程序里面
canvas.ellipse(40,40,160,160);
begin
brush.Style:=bsClear;
pen.color:=clred;
Ellipse(41,41,151,151);
end;
//怎么调整这个圆的位置,比如想放到MoveTo(100,100)这个位置
可以这样计算,先确定圆心x,y,再确定半径r
x1:=x-r
y1:=x-rx2:=x+r
y2:=x+r
画出来就是圆或者x2-x1=y2-y1成立也是圆
41,41,151,151这个坐标定义是一个正方形,正方形的中心在100,100很容易就算出来的。
Ellipse(41,41,151,151);这个语句是在一个矩形范围内画圆,可以正圆也可是椭圆。它的圆心就矩形的中心点。
canvas.ellipse(40,40,160,160);这个圆点就是100,100
你没仔细看回复?
你的程序圆心在100,100坐标上,公式套上去,圆就出来了,r越大,圆就越大ellipse(100-r,100-r,100+r,100+r);
原来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的位置了