G6 中的元素(节点/边)是由一个或多个图形 Shape组成,主要通过自定义节点或自定义边时在 draw
方法中使用 group.addShape
添加,G6 中支持以下的图形 Shape:
各图形 Shape 的通用属性
属性名 |
含义 |
备注 |
fill |
设置用于填充绘画的颜色、渐变或模式 |
对应 Canvas 属性 fillStyle |
stroke |
设置用于笔触的颜色、渐变或模式 |
对应 Canvas 属性 strokeStyle |
shadowColor |
设置用于阴影的颜色 |
|
shadowBlur |
设置用于阴影的模糊级别 |
数值越大,越模糊 |
shadowOffsetX |
设置阴影距形状的水平距离 |
|
shadowOffsetY |
设置阴影距形状的垂直距离 |
|
opacity |
设置绘图的当前 alpha 或透明值 |
对应 Canvas 属性 globalAlpha |
用法
group.addShape('rect', {
attrs: {
fill: 'red',
shadowOffsetX: 10,
shadowOffsetY: 10,
shadowColor: 'blue',
shadowBlur: 10,
opacity: 0.8,
},
});
圆图形 Circle
属性
属性名 |
含义 |
x |
圆心的 x 坐标 |
y |
圆心的 y 坐标 |
r |
圆的半径 |
用法
group.addShape('circle', {
attrs: {
x: 100,
y: 100,
r: 50,
fill: 'blue',
},
});
矩形图形 Rect
属性
属性名 |
含义 |
备注 |
x |
矩形左上角的 x 坐标 |
|
y |
矩形左上角的 y 坐标 |
|
width |
矩形的宽度 |
|
height |
矩形的高度 |
|
radius |
定义圆角 |
支持整数或数组形式, 分别对应左上、右上、右下、左下角的半径: - radius 缩写为 1 或 [ 1 ] 相当于 [ 1, 1, 1, 1 ] - radius 缩写为 [ 1, 2 ] 相当于 [ 1, 2, 1, 2 ] - radius 缩写为 [ 1, 2, 3 ] 相当于 [ 1, 2, 3, 2 ]
|
用法
group.addShape('rect', {
attrs: {
x: 150,
y: 150,
width: 150,
height: 150,
stroke: 'black',
radius: [2, 4],
},
});
椭圆图形 Ellipse
属性
属性名 |
含义 |
x |
圆心的 x 坐标 |
y |
圆心的 y 坐标 |
rx |
水平半径 |
ry |
垂直半径 |
用法
group.addShape('ellipse', {
attrs: {
x: 100,
y: 100,
rx: 50,
ry: 50,
fill: 'blue',
},
});
多边形图形 Polygon
属性
属性名 |
含义 |
备注 |
points |
多边形的所有端点坐标 |
数组形式 |
用法
group.addShape('polygon', {
attrs: {
points: [
[30, 30],
[40, 20],
[30, 50],
[60, 100],
],
fill: 'red',
},
});
扇形图形 Fan
属性
属性名 |
含义 |
备注 |
x |
扇形圆心的 x 坐标 |
|
y |
扇形圆心的 y 坐标 |
|
rs |
水平半径 |
|
re |
垂直半径 |
|
startAngle |
起点弧度 |
弧度制,即使用 Math.PI 表示 |
endAngle |
终点弧度 |
弧度制,即使用 Math.PI 表示 |
clockwise |
为 true 时顺时针渲染,为 false 时逆时针渲染 |
|
用法
group.addShape('fan', {
attrs: {
x: 50,
y: 50,
re: 40,
rs: 30,
startAngle: (1 / 2) * Math.PI,
endAngle: Math.PI,
clockwise: false,
fill: '#b7eb8f',
},
});
图片图形 Image
属性
属性名 |
含义 |
备注 |
x |
图片左上角的 x 坐标 |
|
y |
图片左上角的 y 坐标 |
|
width |
图片宽度 |
|
height |
图片高度 |
|
img |
图片源 |
G6 支持多种格式的图片:url、ImageData、Image、canvas |
用法
group.addShape('image', {
attrs: {
x: 0,
y: 0,
img:
'https://g.alicdn.com/cm-design/arms-trace/1.0.155/styles/armsTrace/images/TAIR.png',
},
});
标记图形 Marker
属性
属性名 |
含义 |
备注 |
x |
中心的 x 坐标 |
|
y |
中心的 y 坐标 |
|
r |
形状半径 |
|
symbol |
指定形状 |
内置了一些常用形状,如圆形 circle , 矩形 square , 菱形 diamond ,三角形 triangle , 倒三角形 triangle-down ,也可以是自定义的 path 路径。 |
用法
group.addShape('marker', {
attrs: {
x: 10,
y: 10,
r: 10,
symbol: function(x, y, r) {
return [['M', x, y], ['L', x + r, y + r], ['L', x + r * 2, y], ['Z']];
},
},
});
路径 Path
⚠️注意:
边太细时候点击不中,请设置 lineAppendWidth
属性值。
属性
属性名 |
含义 |
备注 |
path |
线条路径 |
可以是 String 形式,也可以是线段的数组。 |
startArrow |
起始端的箭头 |
为 true 时在边的结束端绘制默认箭头,为 false 时不绘制结束端箭头。也可以是一个通过 path 自定义的箭头 |
endArrow |
末尾端的箭头 |
为 true 时在边的开始端绘制默认箭头,为 false 时不绘制开始端箭头。也可以是一个通过 path 自定义的箭头 |
lineAppendWidth |
边的击中范围 |
提升边的击中范围,扩展响应范围,数值越大,响应范围越广 |
lineCap |
设置线条的结束端点样式 |
|
lineJoin |
设置两条线相交时,所创建的拐角形状 |
|
lineWidth |
设置当前的线条宽度 |
|
miterLimit |
设置最大斜接长度 |
|
lineDash |
设置线的虚线样式,可以指定一个数组 |
一组描述交替绘制线段和间距(坐标空间单位)长度的数字。 如果数组元素的数量是奇数, 数组的元素会被复制并重复。例如, [5, 15, 25] 会变成 [5, 15, 25, 5, 15, 25]。 |
用法
group.addShape('path', {
attrs: {
startArrow: {
path: 'M 10,0 L -10,-10 L -10,10 Z',
d: 10,
},
endArrow: {
path: 'M 10,0 L -10,-10 L -10,10 Z',
d: 10,
},
path: [
['M', 100, 100],
['L', 200, 200],
],
stroke: '#000',
lineWidth: 8,
lineAppendWidth: 5,
},
});
文本 Text
属性
属性名 |
含义 |
备注 |
fill |
设置用于填充绘画的颜色、渐变或模式 |
对应 Canvas 属性 fillStyle |
stroke |
设置用于笔触的颜色、渐变或模式 |
对应 Canvas 属性 strokeStyle |
shadowColor |
设置用于阴影的颜色 |
|
shadowBlur |
设置用于阴影的模糊级别 |
数值越大,越模糊 |
shadowOffsetX |
设置阴影距形状的水平距离 |
|
shadowOffsetY |
设置阴影距形状的垂直距离 |
|
opacity |
设置绘图的当前 alpha 或透明值 |
对应 Canvas 属性 globalAlpha |
font |
设置文本内容的当前字体属性 |
|
textAlign |
设置文本内容的当前对齐方式 |
支持的属性:center / end / left / right / start ,默认值为 start |
textBaseline |
设置在绘制文本时使用的当前文本基线 |
支持的属性:
top / middle / bottom / alphabetic / hanging 。默认值为 bottom |
fontStyle |
字体样式 |
对应 font-style |
fontVariant |
设置为小型大写字母字体 |
对应 font-variant |
fontWeight |
字体粗细 |
对应 font-weight |
fontSize |
字体大小 |
对应 font-size |
fontFamily |
字体系列 |
对应 font-family |
用法
group.addShape('text', {
attrs: {
text: 'test text',
x: 0,
y: 10,
fontSize: 14,
textAlign: 'left',
textBaseline: 'middle',
fill: '#0000D9',
},
});