原子 Shape 以及其属性
上一篇
图形 Shape 与 KeyShape
下一篇
复合 Shape 的设计与实现
Loading...
G6 中的元素(节点/边)是由一个或多个 图形 Shape 组成,主要通过自定义节点或自定义边时在 render 方法中使用 upsert 添加,G6 中支持以下的图形 Shape:
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| x | x 坐标 | number | ✓ |
| y | y 坐标 | number | ✓ |
| width | 宽度 | number | ✓ |
| height | 高度 | number | ✓ |
| fill | 填充颜色 | string | Pattern | null | |
| stroke | 描边颜色 | string | Pattern | null | |
| opacity | 整体透明度 | number | string | |
| fillOpacity | 填充透明度 | number | string | |
| strokeOpacity | 描边透明度 | number | string | |
| lineWidth | 线宽度 | number | string | |
| lineCap | 线段端点样式 | butt | round | square | |
| lineJoin | 线段连接处样式 | miter | round | bevel | |
| lineDash | 虚线配置 | number | string | (string | number)[] | |
| lineDashOffset | 虚线偏移量 | number | |
| shadowBlur | 阴影模糊程度 | number | |
| shadowColor | 阴影颜色 | string | |
| shadowOffsetX | 阴影 X 方向偏移 | number | |
| shadowOffsetY | 阴影 Y 方向偏移 | number | |
| cursor | 鼠标样式,CSS 的 cursor 选项都支持 | string | |
| zIndex | 渲染层级 | number | |
| visibility | 可见性 | visible | hidden |
示例:
const shape = BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','circle',{cx: 100,cy: 100,r: 50,fill: 'blue',},container,);
设置或获取实例的绘图属性。
获取实例的属性值。
const width = shape.attr('width');
更新实例的单个绘图属性。
批量更新实例绘图属性。
shape.attr({fill: '#999',stroke: '#666',});
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| cx | 圆心 x 坐标 | number | string | ✓ |
| cy | 圆心 y 坐标 | number | string | ✓ |
| cz | 圆心 z 坐标 | number | string | |
| r | 圆的半径 | number | string | ✓ |
| isBillboard | 是否启用公告牌模式(始终面向相机) | boolean | |
| isSizeAttenuation | 是否启用大小衰减(随视距变化大小) | boolean |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','circle',{cx: 100,cy: 100,r: 50,fill: 'blue',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| x | 矩形 x 坐标 | number | string | |
| y | 矩形 y 坐标 | number | string | |
| z | 矩形 z 坐标 | number | |
| width | 矩形宽度 | number | string | ✓ |
| height | 矩形高度 | number | string | ✓ |
| isBillboard | 是否启用公告牌模式 | boolean | |
| isSizeAttenuation | 是否启用大小衰减 | boolean | |
| radius | 矩形圆角半径 | number | string | number[] |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','rect',{x: 100,y: 100,width: 100,height: 100,radius: 8,fill: 'blue',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| cx | 椭圆中心 x 坐标 | number | string | ✓ |
| cy | 椭圆中心 y 坐标 | number | string | ✓ |
| cz | 椭圆中心 z 坐标 | number | string | |
| rx | 椭圆 x 轴半径 | number | string | ✓ |
| ry | 椭圆 y 轴半径 | number | string | ✓ |
| isBillboard | 是否启用公告牌模式 | boolean | |
| isSizeAttenuation | 是否启用大小衰减 | boolean |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','ellipse',{cx: 100,cy: 100,rx: 50,ry: 80,fill: 'blue',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| x | HTML 元素 x 坐标 | number | string | |
| y | HTML 元素 y 坐标 | number | string | |
| innerHTML | HTML 内容 | string | HTMLElement | ✓ |
| width | HTML 元素宽度 | number | string | |
| height | HTML 元素高度 | number | string |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','html',{x: 100,y: 100,innerHTML: <div>content</div>,},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| x | 图片 x 坐标 | number | string | |
| y | 图片 y 坐标 | number | string | |
| z | 图片 z 坐标 | number | |
| src | 图片资源路径或 HTML 图片元素 | string | HTMLImageElement | ✓ |
| width | 图片宽度 | number | string | |
| height | 图片高度 | number | string | |
| isBillboard | 是否启用公告牌模式 | boolean | |
| isSizeAttenuation | 是否启用大小衰减 | boolean | |
| billboardRotation | 公告牌模式下的旋转角度 | number | |
| keepAspectRatio | 是否保持图片原有宽高比 | boolean |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','image',{x: 100,y: 100,src: 'http://',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| x1 | 线段起点 x 坐标 | number | ✓ |
| y1 | 线段起点 y 坐标 | number | ✓ |
| x2 | 线段终点 x 坐标 | number | ✓ |
| y2 | 线段终点 y 坐标 | number | ✓ |
| z1 | 线段起点 z 坐标 | number | |
| z2 | 线段终点 z 坐标 | number | |
| isBillboard | 是否启用公告牌模式 | boolean | |
| isSizeAttenuation | 是否启用大小衰减 | boolean | |
| markerStart | 线段起点的标记 | DisplayObject | null | |
| markerEnd | 线段终点的标记 | DisplayObject | null | |
| markerStartOffset | 起点标记的偏移量 | number | |
| markerEndOffset | 终点标记的偏移量 | number |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','line',{x1: 100,y1: 100,x2: 150,y2: 150,stroke: 'blue',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| d | 路径定义字符串或数组 | string | PathArray | ✓ |
| markerStart | 路径起点的标记 | DisplayObject | null | |
| markerEnd | 路径终点的标记 | DisplayObject | null | |
| markerMid | 路径中间点的标记 | DisplayObject | null | |
| markerStartOffset | 起点标记的偏移量 | number | |
| markerEndOffset | 终点标记的偏移量 | number | |
| isBillboard | 是否启用公告牌模式 | boolean | |
| isSizeAttenuation | 是否启用大小衰减 | boolean | |
| fillRule | 填充规则 | nonzero | evenodd |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','path',{d: 'M 0,0 L 20,10 L 20,-10 Z',stroke: 'blue',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| points | 多边形的顶点数组 | ([number, number] | [number, number, number])[] | ✓ |
| markerStart | 多边形起点的标记 | DisplayObject | null | |
| markerEnd | 多边形终点的标记 | DisplayObject | null | |
| markerMid | 多边形中间点的标记 | DisplayObject | null | |
| markerStartOffset | 起点标记的偏移量 | number | |
| markerEndOffset | 终点标记的偏移量 | number | |
| isClosed | 是否闭合多边形 | boolean | |
| isBillboard | 是否启用公告牌模式 | boolean | |
| isSizeAttenuation | 是否启用大小衰减 | boolean |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','polygon',{points: [[30, 30],[40, 20],[30, 50],[60, 100],],fill: 'red',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| points | 折线的顶点数组 | ([number, number] | [number, number, number])[] | ✓ |
| markerStart | 折线起点的标记 | DisplayObject | null | |
| markerEnd | 折线终点的标记 | DisplayObject | null | |
| markerMid | 折线中间点的标记 | DisplayObject | null | |
| markerStartOffset | 起点标记的偏移量 | number | |
| markerEndOffset | 终点标记的偏移量 | number | |
| isBillboard | 是否启用公告牌模式 | boolean | |
| isSizeAttenuation | 是否启用大小衰减 | boolean |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','polyline',{points: [[30, 30],[40, 20],[30, 50],[60, 100],],fill: 'red',},container,);
| 属性 | 描述 | 类型 | 必选 |
|---|---|---|---|
| x | 文本 x 坐标 | number | string | |
| y | 文本 y 坐标 | number | string | |
| z | 文本 z 坐标 | number | string | |
| text | 文本内容 | number | string | ✓ |
| fontSize | 字体大小 | number | string | |
| fontFamily | 字体族 | string | |
| fontStyle | 字体样式 | normal | italic | oblique | |
| fontWeight | 字体粗细 | normal | bold | bolder | lighter | number | |
| fontVariant | 字体变种 | normal | small-caps | string | |
| textAlign | 文本水平对齐方式 | start | center | middle | end | left | right | |
| textBaseline | 文本基线 | top | hanging | middle | alphabetic | ideographic | `bottom' | |
| textOverflow | 文本溢出处理方式 | clip | ellipsis | string | |
| lineHeight | 行高 | number | string | |
| letterSpacing | 字间距 | number | string | |
| maxLines | 最大行数 | number | |
| textPath | 文本路径 | Path | |
| textPathSide | 文本路径侧边 | left | right | |
| textPathStartOffset | 文本路径起始偏移 | number | string | |
| textDecorationLine | 文本装饰线 | string | |
| textDecorationColor | 文本装饰线颜色 | string | |
| textDecorationStyle | 文本装饰线样式 | solid | double | dotted | dashed | wavy | |
| isBillboard | 是否启用公告牌模式 | boolean | |
| billboardRotation | 公告牌旋转角度 | number | |
| isSizeAttenuation | 是否启用大小衰减 | boolean | |
| wordWrap | 是否自动换行 | boolean | |
| wordWrapWidth | 自动换行宽度 | number | |
| dx | X 方向偏移 | number | string | |
| dy | Y 方向偏移 | number | string |
示例:
BaseShape.upsert(// 指定图形 key,需要保证在同一个自定义元素类型中保持唯一性'shape','text',{x: 100,y: 100,text: 'text',},container,);
多行文字显示:
{wordWrap: true,wordWrapWidth: 100,maxLines: 4,textOverflow: 'ellipsis',}