# 画布(Canvas)
```js
// 可选TreeCanvas
let canvas = new Canvas({
// 如下属性
root: dom, //canvas的根节点(必传)
layout: {type: 'ForceLayout', options: {}}, //布局设置(选填),可使用集成的,也可自定义布局
layoutOptions: {rankdir: 'TB'}, // 布局配置(选填),传入集成/自定义布局的参数
zoomable: true, //可缩放(选填)
moveable: true, //可平移(选填)
draggable: true, //节点可拖动(选填)
linkable: true, //节点可连接(选填)
disLinkable: true, //节点可取消连接(选填)
layout: {}, //初始化自动布局(选填)
theme: { //主题定制(选填)
group: {
type: 'normal', //节点组类型(选填): normal(随意拖入拖出),inner(只能拖入不能拖出)
dragGroupZIndex: 50 //节点组的默认z-index(选填,默认值:50)
},
node: {
dragNodeZIndex: 250 //节点的默认z-index/2(选填,默认值250)
},
edge: {
type: 'endpoint', //线段连接类型
shapeType: 'Bezier', //线条默认类型
hasRadius: false , //默认曼哈顿曲线不为圆角
label: 'test', //线条默认label
arrow: true, //线条默认是否带箭头
arrowPosition: 0.5, //箭头位置(0 ~ 1)
arrowOffset: 0.0, //箭头偏移
arrowShapeType: '', //自定义箭头样式
Class: XXClass, //自己拓展的class,拖动连线的时候会采用该拓展类
isExpandWidth: false,//增加线条交互区域
defaultAnimate: false,//默认开启线条动画
dragEdgeZindex: 499 //线段的默认z-index(选填,默认:499)
},
endpoint: {
position: [], //限制锚点位置['Top', 'Bottom', 'Left', 'Right'],
linkableHighlight: true,//连线时会触发point.linkable的方法,可做高亮
limitNum: 10, //限制锚点的连接数目
expandArea: { //锚点过小时,可扩大连线热区
left: 10,
right: 10,
top: 10,
botton: 10
}
},
zoomGap: 0.001, //鼠标放大缩小间隙设置
autoFixCanvas: { //节点拖动或连线拖动到画布边缘时,画布自动延展
enable: false,
autoMovePadding: [20, 20, 20, 20] //触发自动延展的画布内边距
},
autoResizeRootSize: true, // 自动适配root大小,默认为true
isMouseMoveStopPropagation: true, // 拖动事件是否阻止冒泡
},
global: { //自定义配置,会贯穿所有canvas,group,node,edge,endpoint对象
isScopeStrict: false //scope是否为严格模式(默认为false)
}
});
canvas.draw({
// 数据
})
```
## 属性
### root _``_ (必填)
实例容器,一般是一个具有宽高的dom元素, canvas 根节点(必传)
### zoomable _``_ (选填)
画布是否可缩放;值类型 `boolean`,默认 `false`
### moveable _``_ (选填)
画布是否可移动;值类型 `boolean`,默认 `false`
### draggable _``_ (选填)
画布节点是否可拖动;值类型 `boolean`,默认 `false`
### linkable _``_ (选填)
画布锚点是否可以拖动连线;值类型 `boolean`,默认 `false`
### disLinkable _``_ (选填)
画布锚点是否可以拖动断开线;值类型 `boolean`,默认 `false`
### layout _`