大家好!
近日研究用Delphi画平行线,如何在Canvas上已知道任意的折线画出折线平行线,好象有点难度哟!
诚心相求,谢谢!

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        i,iCnt:integer;
        pts:Array of TPoint;
    begin
        iCnt:=StrToInt(Edit1.Text);
        SetLength(pts,iCnt);
        Randomize;
        for i:=0 to iCnt-1 do
        begin
            pts[i].X:=100+Random(300);
            pts[i].Y:=100+Random(300);
        end;
        Canvas.MoveTo(pts[0].x,pts[0].y);
        for i:=1 to iCnt-1 do
        begin
            Canvas.LineTo(pts[i].X,pts[i].Y);
        end;    Canvas.MoveTo(pts[0].x+10,pts[0].y+10);
        for i:=1 to iCnt-1 do
        begin
            Canvas.LineTo(pts[i].X+10,pts[i].Y+10);
        end;
    end;
      

  2.   

    已知两点A、B,画过第三点C的直线平行于直线ABprocedure TForm1.Button1Click(Sender: TObject);
      procedure PLine(A, B, C: TPoint);
      var
        D: TPoint;
      begin
        Canvas.MoveTo(A.X, A.Y);
        Canvas.LineTo(B.X, B.Y);
        Canvas.MoveTo(C.X, C.Y);
        if A.X = B.X then
        begin
          D.X := C.X;
          D.Y := C.Y + LineLen;
        end else if A.Y = B.Y then
        begin
          D.X := C.X + LineLen;
          D.Y := C.Y;
        end else
        begin
          D.X := B.X + C.X - A.X;
          D.Y := B.Y + C.Y - A.Y;
        end;
        Canvas.LineTo(D.X, D.Y);
      end;
    var
      A, B, C: TPoint;
    begin
      A.X := 20;
      A.Y := 30;
      B.X := 40;
      B.Y := 70;
      C.X := 80;
      C.Y := 90;
      PLine(A, B, C);
    end;