如何在delphi 中画带箭头的直线(改自网上一位论…

2008-04-10 02:56:47来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

procedure TLineItem.Draw(aCanvas: TCanvas);

var

Xa, Ya, Xb, Yb: real;

D: real;

X1, Y1, X0, Y0: Integer;

begin

aCanvas.Pen.Style := PsSolid;

aCanvas.Pen.Color := clWhite;

//画直线

aCanvas.MoveTo(PtStart.X, PtStart.Y);

aCanvas.LineTo(PtEnd.X, PtEnd.Y);

//画箭头

X0 := PtStart.X;//PtStart是箭头的起点,PtEnd是终点,都是Tpoint

Y0 := PtStart.Y;

X1 := PtEnd.X;

Y1 := PtEnd.Y;

D := Sqrt((Y1 - Y0) * (Y1 - Y0) (X1 - X0) * (X1 - X0));

if D > 0 then begin

Xa := X1 ARROWLEN * ((X0 - X1) (Y0 - Y1) / 2) / D;

Ya := Y1 ARROWLEN * ((Y0 - Y1) - (X0 - X1) / 2) / D;

Xb := X1 ARROWLEN * ((X0 - X1) - (Y0 - Y1) / 2) / D;

Yb := Y1 ARROWLEN * ((Y0 - Y1) (X0 - X1) / 2) / D;

aCanvas.MoveTo(PtEnd.X, PtEnd.Y);

aCanvas.LineTo(Trunc(Xa), Trunc(Ya));

aCanvas.MoveTo(PtEnd.X, PtEnd.Y);

aCanvas.LineTo(Trunc(Xb), Trunc(Yb));

end;

//如果选中画出焦点矩形,可以不要

if FSelected = true then begin

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:项目迭代开发手记--文件分割存储用例的实现过程(3)

下一篇:在网络上进行摄像头视频通讯