moveto(x1,y1);
lineto(x2,y2); 解决了直线的问题,如果要吧箭头也画上,就要算出箭头的另外两个端点,然后用上述方法画即可
lineto(x2,y2); 解决了直线的问题,如果要吧箭头也画上,就要算出箭头的另外两个端点,然后用上述方法画即可
解决方案 »
- BUTTON觸發不同的事件
- 查出文本文档共几条记录
- delphi 如何调用c#写的dll?能不能给个demo阿?我找了好多地方,都没有找到阿!谢谢各位了!
- 用inno制作基于access单机版的安装程序时,出现下面的问题。
- 晕!大家帮忙看看我取服务器时间,并设置为客户端时间的代码有什么问题啊?
- 中国零售业的未来——人人乐!(转贴)
- 如何删除应用程序路径中产生的垃圾文件。比如我的系统每次启动后会产生一些*.mb文件,我想在关闭系统时将他删除!怎么操作!给段代码!谢
- FastReport安装!!!!!!!!!!!!!!!!!!!!
- 请问有谁知道用delphi6做软件启动闪现封面!!!
- 有关Webbrowser的保存
- 能否修改outlook2000,例如加一个菜单,把我需要的功能加进去,参加讨论者都有分!
- 在滚动字幕中我用PLAYSOUND播放.WAV文件时为什么只听到‘叮’的一声
var
LBeginX,LBeginY,LEndX,LEndY,RLx,RLy,RRx,RRy : integer;
begin
LBeginX := 10;
LBeginY := 30; LEndX := 60;
LEndY := 30; RLx := round((LEndX - LBeginX) * 0.9);
RRx := RLx; RLy := LBeginY + round((LEndX - RLx)*0.632);
RRy := LBeginY - round((LEndX - RLx)*0.632); with Form1.Canvas do
begin
MoveTo(LBeginX,LBeginY);
LineTo(LEndX,LEndY);
MoveTo(LEndX,LEndY);
LineTo(RRx,RRy);
MoveTo(LEndX,LEndY);
LineTo(RLx,RLy);
end;
end;
Y: Integer);
const
K = 0.05;
P = 20;
var
X0, Y0: Integer;
X1, Y1: Integer;
T: Real;
R: Real;
begin
Refresh;
X0 := ClientWidth div 2;
Y0 := ClientHeight div 2;
Canvas.MoveTo(X0, Y0);
Canvas.LineTo(X, Y);
if (X0 - X) = 0 then
if (Y0 - Y) > 0 then
T := Pi * 1.5
else T := Pi * 0.5
else if (X0 - X) < 0 then
T := ArcTan((Y0 - Y) / (X0 - X))
else T := Pi + ArcTan((Y0 - Y) / (X0 - X));
R := Sqrt(Sqr(X0 - X) + Sqr(Y0 - Y));
X1 := Trunc(Cos(T + K) * (R - P)) + X0;
Y1 := Trunc(Sin(T + K) * (R - P)) + Y0;
Canvas.MoveTo(X, Y);
Canvas.LineTo(X1, Y1);
X1 := Trunc(Cos(T - K) * (R - P)) + X0;
Y1 := Trunc(Sin(T - K) * (R - P)) + Y0;
Canvas.MoveTo(X, Y);
Canvas.LineTo(X1, Y1);
end;
unit MAIN;interfaceuses
Classes, Graphics, Controls, Forms;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
fst:boolean;
X0, Y0: Integer;
X1, Y1: Integer;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
fst:=true;
end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
K = 0.05;
P = 20;
var
T: Real;
R: Real;begin
if fst then
begin
Canvas.MoveTo(X, Y);
x0:=x;y0:=y;
fst:=false;
end
else
begin
Canvas.LineTo(X, Y); if (X0 - X) = 0 then
if (Y0 - Y) > 0 then
T := Pi * 1.5
else T := Pi * 0.5
else if (X0 - X) < 0 then
T := ArcTan((Y0 - Y) / (X0 - X))
else T := Pi + ArcTan((Y0 - Y) / (X0 - X));
R := Sqrt(Sqr(X0 - X) + Sqr(Y0 - Y));
X1 := Trunc(Cos(T + K) * (R - P)) + X0;
Y1 := Trunc(Sin(T + K) * (R - P)) + Y0;
Canvas.MoveTo(X, Y);
Canvas.LineTo(X1, Y1);
X1 := Trunc(Cos(T - K) * (R - P)) + X0;
Y1 := Trunc(Sin(T - K) * (R - P)) + Y0;
Canvas.MoveTo(X, Y);
Canvas.LineTo(X1, Y1);
fst:=true;
end;
end;end.
Y: Integer);
const
P = 20;
var
X0, Y0: Integer;
X1, Y1: Integer;
T: Real;
R: Real;
K: Real;
begin
Refresh;
X0 := ClientWidth div 2;
Y0 := ClientHeight div 2;
Canvas.MoveTo(X0, Y0);
Canvas.LineTo(X, Y);
if (X0 - X) = 0 then
if (Y0 - Y) > 0 then
T := Pi * 1.5
else T := Pi * 0.5
else if (X0 - X) < 0 then
T := ArcTan((Y0 - Y) / (X0 - X))
else T := Pi + ArcTan((Y0 - Y) / (X0 - X));
R := Sqrt(Sqr(X0 - X) + Sqr(Y0 - Y));
K := 4.2 / R;
X1 := Trunc(Cos(T + K) * (R - P)) + X0;
Y1 := Trunc(Sin(T + K) * (R - P)) + Y0;
Canvas.MoveTo(X, Y);
Canvas.LineTo(X1, Y1);
X1 := Trunc(Cos(T - K) * (R - P)) + X0;
Y1 := Trunc(Sin(T - K) * (R - P)) + Y0;
Canvas.MoveTo(X, Y);
Canvas.LineTo(X1, Y1);
end;//自己想想办法//看看数学书吧
我开了个 [zswang(伴水)(需要充充电)来充电] 话题去拿分去,过时不侯。 ~@-@~ ^_^