antv系列图引擎X6、G6比对选择,并实现vue实例ER图

64 篇文章 3 订阅
49 篇文章 2 订阅

一、概述

X6是基于svg,G6是基于canvas

1、svg 支持事件处理器,而 canvas 不支持事件处理器。(使用canvas实现事件操作较麻烦一些
2、canvas 适合图像密集型的游戏,频繁地重绘图像,svg 绘制的复杂度高时减慢渲染的速度。(大数据量渲染时选择canvas
总之:主要是这两点的,虽然本身做ER图,应该选择X6的,但是由于大数据渲染的,只能两者均衡使用G6

二、ER图实例

官方ER图实例

官方实例有表内滚动,但是有点bug(连接不会跟着字段走),所以去掉了。

按照实例代码改成vue初始化的

这里就比较简单,直接在mounted生命周期初始化,不在created,是因为无法获取到DOM#container

自定义工具区

官方示例中是(使用 String 自定义 ToolBar 功能)
但是,看了文档,我们还可以使用使用 DOM 自定义 ToolBar 功能

// 工具栏
    const toolbar = new G6.ToolBar({
      className: 'g6-component-toolbar',
      getContent: () => {
        // 渲染自定义节点---组件
        const outEl = document.getElementById('toolbar')
        return outEl

      },
      position: { x: 10, y: 10 },
    });

拖动节点延迟严重

issues#2986中提到,并给出问题所在,如果不需要可以选择去掉

自定义edge连线

官方示例注册的自定义边dice-er-edge没有提供连线,所以我们如果有需要则得在draw(cfg, group)方法中自己定义连线中途的图形制作

自定义Minimap

new G6.Minimap()默认宽高[200,150]

自定义布局

onLayout() {
      // 更新布局
      const grid = {
        type: 'grid',
        begin: [20, 20],
        preventOverlap: true // 防止重叠
      }
      // const dagre = {
      //   type: 'dagre',
      //   rankdir: 'LR',
      //   align: 'UL',
      //   controlPoints: true,
      //   nodesepFunc: () => 0.2,
      //   ranksepFunc: () => 0.5,
      // }
      this.graph.updateLayout(grid)
    }

自定义鼠标滚轮事件

  • 直接滚轮:上下滚动
  • alt+滚轮:放大缩小
scorll(e) {
        const x = e.clientX
        const y = e.clientY
        if (e.altKey) {
          if (e.wheelDelta > 0) {
            this.graph.zoom(1.5, { x, y })
          } else {
            this.graph.zoom(0.5, { x, y })
          }
        } else {
          this.graph.translate(0, e.wheelDelta < 0 ? -100 : 100);
        }

      }

最后

代码放在了码云(learn-antv-g6: antv/g6的vue实现实例 (gitee.com)),后续还会更新一些其他g6的vue实现

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
G6流程中,hover(悬停)是一个常见的交互行为。通过悬停在节点或边上,可以触发相应的效果或显示额外的信息。要实现这个功能,可以使用G6的自定义交互行为。根据中的文档,可以通过G6.registerBehavior方法注册一个自定义交互行为,然后在这个行为中定义悬停的效果。 在自定义交互行为中,可以使用一些G6提供的API来实现悬停效果。例如,可以使用node.on方法来监听节点的鼠标悬停事件,然后在回调函数中对节点进行相应的操作,比如改变节点的样式或显示额外的信息。同样,也可以使用edge.on方法来实现边的悬停效果。 具体的实现方式可以参考G6官方文档的示例和相关API的详细说明。根据你的需求和场景,可以进一步定制和调整悬停效果,以满足你的具体需求。 综上所述,要在G6流程实现悬停效果,可以使用G6的自定义交互行为,并在这个行为中使用相应的API来实现节点和边的悬停效果。详细的实现步骤和代码可以参考G6官方文档的相关示例和API文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [使用antv/G6vue项目中开发较复杂样式流程](https://blog.csdn.net/sinat_41013606/article/details/127669528)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [一文讲述G6实现流程绘制的常用方法](https://blog.csdn.net/devcloud/article/details/119905667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值