下载 

通过百度网盘分享的文件:simple-graph-master.zip
链接:https://pan.baidu.com/s/19KHlGaitim21qcgXHl_HgQ
提取码:n3zq

安装

将C:\Users\Administrator\Downloads\simple-graph-master\simple-graph-master\Source

加入到

第一步:点击“ File”-“ New ”菜单中的“ Package – Delphi for Win32”,新建一个控件包。

第二步:选中右边“ Project Manager ”中“ Contains ”文件夹,点击鼠标右键,在弹出的菜单中选择“ Add”。

第三步:在 Add 对话框中,点击“ Browse ”按钮,选择要安装的 PAS文件,然后点击“ OK ”按钮。

第四步:鼠标右击“ Project Manager ”中的“ Package1.bpl”,在弹出的菜单中选择“ Install”,这时就完在了控件的安装。

 可以打开附带的Examples,看是否安装成功

C:\Users\Administrator\Downloads\simple-graph-master\simple-graph-master\Examples\ElasticNodes


 双击, 更改形状的  文本, 边框色,填充色

 


  线里添加 转折点 

1]先选中 该 线

2]右键,点击Add Point

3]同时,也可以 右键 删除该 转折点

双击线 也可以添加文本

 


 添加图片

01]添加一个图形

 2]双击该图形

 

 可以改变图形的形状

 可以导出为矢量图,或者 位图BMP

 仅添加文本

 拖一个矩形框,双击它

 添加自定义图形

在SimpleGraph.pas源代码里添加 自定义 结点 和 文本框的 四个结点

参考

  { TRhomboidalNode 菱形 }
  TRhomboidalNode = class(TPolygonalNode)
  protected
    procedure QueryMaxTextRect(out Rect: TRect); override;
    procedure DefineVertices(const ARect: TRect; var Points: TPoints); override;
  end;
{ TRhomboidalNode }

procedure TRhomboidalNode.QueryMaxTextRect(out Rect: TRect);  { 菱形 }
var
  R: TRect;
begin
  with Rect do
  begin
    Left := (Vertices[0].X + Vertices[3].X) div 2;
    Top := (Vertices[0].Y + Vertices[3].Y) div 2;
    Right := (Vertices[1].X + Vertices[2].X) div 2;
    Bottom := (Vertices[1].Y + Vertices[2].Y) div 2;
  end;
  inherited QueryMaxTextRect(R);
  IntersectRect(Rect, R);
end;

procedure TRhomboidalNode.DefineVertices(const ARect: TRect; var Points: TPoints);
begin
  SetLength(Points, 4);
  with ARect do
  begin
    with Points[0] do
    begin
      X := (Left + Right) div 2;
      Y := Top;
    end;
    with Points[1] do
    begin
      X := Right;
      Y := (Top + Bottom) div 2;
    end;
    with Points[2] do
    begin
      X := (Left + Right) div 2;
      Y := Bottom;
    end;
    with Points[3] do
    begin
      X := Left;
      Y := (Top + Bottom) div 2;
    end;
  end;
end;

我的 自定义

  {Parallelogram  平行四边形 涂磊}
  TParallelogram  = class(TPolygonalNode)
  protected
    procedure QueryMaxTextRect(out Rect: TRect); override;
    procedure DefineVertices(const ARect: TRect; var Points: TPoints); override;
  end;
{ TParallelogram 平行四边形 涂磊}
procedure TParallelogram.DefineVertices(const ARect: TRect;   var Points: TPoints);  //定义顶点
begin
  SetLength(Points, 4);
  with ARect do
  begin
    with Points[0] do                      //A
    begin
      X := (Left + Right) div 2;
      Y := Top;
    end;
    with Points[1] do                     //B
    begin
      X := Right;
      Y := Top ;
    end;
    with Points[2] do                     //C
    begin
      X := (Left + Right) div 2;          //D
      Y := Bottom;
    end;
    with Points[3] do
    begin
      X := Left;
      Y := Bottom;
    end;
  end;
end;
{ TParallelogram 平行四边形 涂磊}
 procedure TParallelogram.QueryMaxTextRect(out Rect: TRect);  //定义文本 框 顶点
var
  R: TRect;
begin
  with Rect do
  begin
    Left := Vertices[0].X ;
    Top := Vertices[0].Y  ;
    Right := Vertices[1].X  ;
    Bottom := Vertices[2].Y;
  end;
  inherited QueryMaxTextRect(R);
  IntersectRect(Rect, R);
end;
procedure TMainForm.ToolButton43Click(Sender: TObject);
begin
   SimpleGraph.DefaultNodeClass := TParallelogram; {Parallelogram  平行四边形 涂磊}
  SimpleGraph.CommandMode := cmInsertNode;
end;