gojs常用API-画布定义

871 阅读2分钟

基础画布定义API

画布初始位置 initialContentAlignment: go.Spot.Center

画布位置,定义后就不能拖动画布了,画布位置交由gojs管理 contentAlignment:go.Spot.Center

初始坐标 initialPosition: new go.Point(0, 0)

禁止移动节点 allowMove:false

禁止复制 allowCopy: false

禁止删除 allowDelete:false

禁止选中 allowSelect:false

禁止缩放 allowZoom: false

禁止撤销和重做 "undoManager.isEnabled": false

禁止水平拖动画布 禁止水平滚动条 allowHorizontalScroll: false

禁止垂直拖动画布 禁止垂直滚动条 allowVerticalScroll: false

只读 isReadOnly: true

画布初始化动画时间 "animationManager.duration": 600

禁止画布初始化动画 "animationManager.isEnabled": false

画布比例 scale:1.5

只读操作,节点不能被拖拽和连线 isReadOnly: true,

画布比例自适应
autoScale

autoScale:go.Diagram.Uniform,//自适应

autoScale:go.Diagram.UniformToFill,//自适应

autoScale:go.Diagram.None,//默认值不自适应
画布最小比例 minScale:1.2,
画布最大比例 maxScale:2.0,
显示网格 "grid.visible":true,
画布边距padding
padding:80或者new go.Margin(2, 0)或new go.Margin(1, 0, 0, 1)

画布节点连线定义

validCycle:go.Diagram.CycleDestinationTree 只允许有一个父节点

validCycle:go.Diagram.CycleNotUndirected

validCycle:go.Diagram.CycleNotDirected

validCycle:go.Diagram.CycleSourceTree

禁止鼠标拖动区域选中dragSelectingTool "dragSelectingTool.isEnabled" : false,

或者在画布对象myDiagram创建后再调用

myDiagram.toolManager.dragSelectingTool.isEnabled = false ;

画布节点连线定义validCycle,可能理解有误,有问题麻烦误留言矫正,慢慢测中,先留个位置 默认无限制 validCycle:go.Diagram.CycleAll 节点之间连线随便连 一个节点只允许有一个父节点,并且没有定向循环(仅允许维护树结构的链接)

validCycle:go.Diagram.CycleDestinationTree 禁止A→C,B→C

节点的有效链接不会在图中产生有向循环 validCycle:go.Diagram.CycleNotDirected

禁止A-B-C-A 节点的有效链接不会在图中产生无向循环 validCycle:go.Diagram.CycleNotUndirected

???测不出来 一个节点只允许有一个子节点并且没有定向循环。 validCycle:go.Diagram.CycleSourceTree 禁止A→B,A→C

画布监听事件API

节点生成事件 externalobjectsdropped

线生成事件 LinkDrawn

线重新连接事件 LinkRelinked

删除后事件 SelectionDeleted

删除前事件 SelectionDeleting 例子入口

节点移动事件 SelectionMoved

//监听节点或线的删除事件
myDiagram.addDiagramListener("SelectionDeleted", function(e) {
        e.subject.each(function(n){
        console.log(n.data.key);
    });
})

自动布局API

PS:这里只写比较常用布局,其他布局请查询官网API

网格布局 go.GridLayout

力导向布局 go.ForceDirectedLayout

树形布局 go.TreeLayout

径向布局(需要引RadialLayout.js) RadialLayout

//用例定义画布节点为网格布局
myDiagram = $(go.Diagram, "myDiagramDiv", // 画布定义
    {layout:$(go.GridLayout, //自动布局定义,设置为网格布局
    { comparer: go.GridLayout.smartComparer,//设置从小到大排序
      spacing: go.Size.parse("20 20"),//设置节点间隔
      comparer: function(a, b){
        //重写布局算法,根据其他属性值重新增设置顺序
        var ay = a.data.type;
        var by = b.data.type;
        if(!!ay&&!!by){
        if(ay > by) return -1;
        if(ay < by) return 1;
        }else if(!!ay){
            return -1;
        }else if(!!by){
            return 1;
        }
    }
    });
});

节点的属性

背景色 fill: '#f2f2f2'

边框颜色 stroke: "transparent",

文章来源: www.cnblogs.com/sexintercou…