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

embedded/2024/10/18 16:07:26/

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

 

核心代码:

 在创建画布的时候即可设置连接线样式,通过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')!, // 断言该值不为 nullgrid: {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',},},}},});


http://www.ppmy.cn/embedded/128498.html

相关文章

常用镜像保存

一、英伟达官方镜像 https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-tensorrt 1.orin&#xff1a;部署用&#xff0c;https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel_22-04.html#rel_22-04 2.triton&#xff1a;部署用&#xff0c;n…

C++ OpenCV实现简单的自瞄脚本(OpenCV实战)

练枪的时候发现打的靶子特征很醒目&#xff0c;而且操控的逻辑也不是说特别难&#xff0c;刚好会一点点C和OpenCV&#xff0c;为什么不试试写一个小程序来帮助我们瞄准呢&#xff1f; 实现效果 我们主要是通过这款游戏测试自瞄 简单的调参之后本周世界排名也是打到了第一名&…

探索 Spring AI:Java 开发者的 AI 应用开发新利器

在当今这个由人工智能驱动的时代&#xff0c;AI 技术正在以前所未有的速度改变着我们的工作和生活方式。对于 Java 开发者来说&#xff0c;将 AI 能力集成到他们的应用程序中&#xff0c;已经成为了一个迫切的需求。阿里云开源的 Spring AI Alibaba 框架&#xff0c;正是为了满…

uniapp学习(005-2 详解Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第41p-第p47的内容 文章目录 mainifest.json文件配置获取微信小程序appid注册微信小程序微信小程序控制台图形界…

前端学习笔记(1.0)

在开发项目时&#xff0c;需要使用符号来代替书写./和../等麻烦的路径书写&#xff0c;所以就遇到了下面的问题。 输入没有路径提示 我们都知道&#xff0c;设置是通过配置vite等脚手架工具的配置文件&#xff0c;设置别名即可。 但是如果需要在使用的时候需要出现路径提示&…

弘景光电:以创新为翼,翱翔光学科技新蓝海

在科技日新月异的今天&#xff0c;光学镜头及模组作为智能设备的核心组件&#xff0c;其重要性日益凸显。广东弘景光电科技股份有限公司&#xff08;以下简称“弘景光电”&#xff09;正是在这一领域中&#xff0c;凭借其卓越的研发实力和市场洞察力&#xff0c;即将在创业板上…

HarmonyOS NEXT 应用开发实战(三、ArkUI页面底部导航TabBar的实现)

在开发HarmonyOS NEXT应用时&#xff0c;TabBar是用户界面设计中不可或缺的一部分。本文将通过代码示例&#xff0c;带领大家一同实现一个常用的TabBar&#xff0c;涵盖三个主要的内容页&#xff1a;首页、知乎日报和我的页面。以模仿知乎日报的项目为背景驱动&#xff0c;设定…

Go-知识泛型

Go-知识泛型 1. 认识泛型1.1 不使用泛型1.2 使用泛型 2. 泛型的特点2.1 函数泛化2.2 类型泛化 3. 类型约束3.1 类型集合3.2 interface 类型集合3.2.1 内置interface类型集合3.2.2 自定义interface类型集合3.2.2.1 任意类型元素3.2.2.2 近似类型元素3.2.2.3 联合类型元素 3.2.3 …