g6踩坑

1. 当父元素有transform: scale()时,有鼠标定位不准确的问题

// 开启支持css缩放,智能保证基本的准确,很多情况还是有问题
graph.get('canvas').set('supportCSSTransform', true)

2. 图形分组总体居中对齐的问题

const matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1]
const box = group.getCanvasBBox()

// 3*3 矩阵变换,用于二维渲染
const newMatrix = transform(matrix, [
    ['t', -box.width / 2, 60], // translate
    // ['r', Math.PI / 4], // rotate
    // ['s', 2, 0.5], // scale
])

group.setMatrix(newMatrix)

3、 两个实体间不同方向的边会有交叉现象,解决方法,

// 配置边连入节点的中心
linkCenter: true,

// 箭头为自定义箭头
endArrow: {
   path: 'M 0,0 L 10,5 Q 7,0,10,-5 Z',
   d: -25,
},
// 上面为临时解决方法,另一种是计算连接点,箭头定义Wie函数式
vee: (width = 15, length = 20, d = 0) => {
      const begin = d * 2
      const path = `M ${begin},0 L ${begin + length},-${width / 2}
      Q ${begin + (2 * length) / 3},0 ${begin + length},${width / 2} Z`
      return path
  }

 

4、g6在更新布局时无法切回特定布局,后来发现是无法切换回实例化时的布局,可在切换布局时先destroyLayout()销毁布局,再updateLayout()更新布局

5、用changeData()方法更新数据会保留原来的样式,解决方法是先运行clear()

6、实例的方法如果达不到想要的效果,可以在实例化时覆盖相应的方法

7、g6图形样式属性实际是对应canvas中的fillStyle属性

// 线性渐变:l代表线性渐变色,(0)表示渐变角度,0:#ffffff表示起始色为#ffffff,0.5:#7ec2f3表示中间色为#7ec2f3,1:#1890ff表示结束渐变色为#1890ff
fill: 'l(0) 0:#ffffff 0.5:#7ec2f3 1:#1890ff'

// 环形渐变:r代表环形渐变,(0.5,0.5,0.1)分别表示开始坐标的x,y和渐变半径,0:#ffffff表示起始色为#ffffff,1:#1890ff表示结束渐变色为#1890ff
fill: 'r(0.5, 0.5, 0.1) 0:#ffffff 1:#1890ff'

 

posted @ 2021-07-07 14:45  笑言哑哑  阅读(1237)  评论(0编辑  收藏  举报