AntV X6自定义连接线样式(Vue3+TypeScript)

效果图如下:(连接线是有动画的,模拟数据传输特效)

核心代码:

在创建画布的时候即可设置连接线样式,通过createEdge属性即可实现,代码如下:

    connecting: {
      snap: {
        radius: 50, //自动吸附,并设置自动吸附路径
      },
      allowBlank: false, // 是否允许连接到画布空白位置的点(就是能不能拉线连空白的地方)
      allowLoop: false, // 是否允许创建循环连线,即边的起始节点和终止节点为同一节点,就是能不能自我连线(箭头不能穿过仪器)
      allowNode:false, //是否允许边连接到节点(非节点上的连接桩),默认为 true 。(就是要让它必须连接到连接桩,连接到节点不行)
      allowEdge:false, //是否可以同一个起点终点,在箭头的线中间加一个箭头,就是一条线能一直加箭头
      allowMulti: true, // 是否可以一个起点连多个终点
      highlight: true, // 拖动边时,是否高亮显示所有可用的连接桩或节点,默认值为 false 。一般都会与 highlighting 联合使用。
      createEdge() {
        return new Shape.Edge({
          attrs: {
            line: {
              stroke: '#1890ff',
              strokeDasharray: 5,
              style: {
                animation: 'ant-line 30s infinite linear',
              },
              strokeWidth: 2,    // 设置连接线宽度
              targetMarker: null, // 去掉终点箭头
              sourceMarker: null, // 去掉起点箭头
            },
          },
        });
      },
    },

在全局注册连接线特效,方便AntVX6检测到样式。

<template>
  <RouterView />
</template>

<script setup lang="ts">


</script>


<style>
body {
  margin: 0; /* 修正了这里的拼写错误 */
  padding: 0;
}
/* 连接线特效 */
@keyframes ant-line {
  to {
    stroke-dashoffset: -1000;
  }
}
</style>

总体代码如下:

  graph.value = new Graph({
    width: 1958,
    height: 1240,
    panning:true,
    mousewheel:true,
    background: {
      color: '#f0f7fc',
    },
    container: document.getElementById('antvcontainer')!, // 断言该值不为 null
    grid: {
      visible: true,
      type: 'doubleMesh',
      args: [
        {
          color: '#eee', // 主网格线颜色
          thickness: 1, // 主网格线宽度
        },
        {
          color: '#ddd', // 次网格线颜色
          thickness: 1, // 次网格线宽度
          factor: 4, // 主次网格线间隔
        },
      ],
    },
    //连线交互
    connecting: {
      snap: {
        radius: 50, //自动吸附,并设置自动吸附路径
      },
      allowBlank: false, // 是否允许连接到画布空白位置的点(就是能不能拉线连空白的地方)
      allowLoop: false, // 是否允许创建循环连线,即边的起始节点和终止节点为同一节点,就是能不能自我连线(箭头不能穿过仪器)
      allowNode:false, //是否允许边连接到节点(非节点上的连接桩),默认为 true 。(就是要让它必须连接到连接桩,连接到节点不行)
      allowEdge:false, //是否可以同一个起点终点,在箭头的线中间加一个箭头,就是一条线能一直加箭头
      allowMulti: true, // 是否可以一个起点连多个终点
      highlight: true, // 拖动边时,是否高亮显示所有可用的连接桩或节点,默认值为 false 。一般都会与 highlighting 联合使用。
      createEdge() {
        return new Shape.Edge({
          attrs: {
            line: {
              stroke: '#1890ff',
              strokeDasharray: 5,
              style: {
                animation: 'ant-line 30s infinite linear',
              },
              strokeWidth: 2,    // 设置连接线宽度
              targetMarker: null, // 去掉终点箭头
              sourceMarker: null, // 去掉起点箭头
            },
          },
        });
      },
    },
    //高亮器
    highlighting:{
      // 当连接桩可以被链接时,在连接桩外围渲染一个 2px 宽的红色矩形框
      magnetAvailable: {
        name: 'stroke',
        args: {
          padding: 4,
          attrs: {
            'stroke-width': 2,
            stroke: 'red',
          },
        },
      }
    },

  });
相关推荐
前端拾光者25 分钟前
利用D3.js实现数据可视化的简单示例
开发语言·javascript·信息可视化
Json_1817901448044 分钟前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
风尚云网1 小时前
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
前端·css·学习·html·html5·风尚云网
木子02041 小时前
前端VUE项目启动方式
前端·javascript·vue.js
GISer_Jing1 小时前
React核心功能详解(一)
前端·react.js·前端框架
捂月1 小时前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
深度混淆1 小时前
实用功能,觊觎(Edge)浏览器的内置截(长)图功能
前端·edge
Smartdaili China1 小时前
如何在 Microsoft Edge 中设置代理: 快速而简单的方法
前端·爬虫·安全·microsoft·edge·社交·动态住宅代理
秦老师Q1 小时前
「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用
前端·chrome·edge
滴水可藏海1 小时前
Chrome离线安装包下载
前端·chrome