antvis/G6

[V5]运行graph.getCanvas().transient.removeChild(line);删除line时,没有生效 #5892

k644606347 posted onGitHub

Describe the bug / 问题描述

我正在为V5版本,制作一个叫snapline的插件,用于在节点间生成对齐线,简单的demo,遇到了一些问题:

  1. 当节点间相互远离时,我会运行graph.getCanvas().transient.removeChild(line);删除对齐线,但没有生效;

    <img width="1713" alt="image" src="https://github.com/antvis/G6/assets/6951527/5705ed09-c891-43b4-bf59-76243f7558e7">

  2. 我需要获取到所有node的size,或者上下左右4个点位的坐标,来更精确的布局对齐线(比如在node左右侧位置设置对齐线),但通过graph.getNodeData()[0].style.size没有获取到,不知道有什么方法吗;

    <img width="810" alt="image" src="https://github.com/antvis/G6/assets/6951527/7b664c32-809a-4f08-9773-677b241385d4">

No response

Steps to Reproduce the Bug or Issue / 重现步骤

No response

G6 Version / G6 版本

🆕 5.x

Operating System / 操作系统

macOS

Browser / 浏览器

Chrome

Additional context / 补充说明

No response


首先非常感谢你的贡献,针对你提到的问题:

  1. 分层渲染是 G6 5.0 的初步设想,但并未完全实现,因此当前所有插入到画布中的节点都位于主画布(即 graph.getCanvas().main)。因此你可以先通过 graph.getCanvas().main.removeChild(line); 进行删除。
  2. 如果要获取节点的尺寸,比较准确的方式是直接从元素中获取,以下是相关步骤

    假定你的开发的 snapline 是一个插件(Plugin),那么你应该可以访问到 Graph 上下文(即 context,或者你可以先临时通过 graph.context) 访问。

    const { element } = context; // element 是一个用于管理元素绘制的模块
    const node = element.getElement('xxx'); // 参数为元素 ID
    针对节点的尺寸有两种情况: a. 如果期望是对节点整体对齐(包括节点的标签文本、徽标等),那么你可以直接通过 node.getBounds() 获取其尺寸 b. 如果期望对节点的主图形(key)进对齐,那么可以使用 node.getShape('key').getBounds() 获取主图形尺寸
posted by Aarebecca 10 months ago

首先非常感谢你的贡献,针对你提到的问题:

  1. 分层渲染是 G6 5.0 的初步设想,但并未完全实现,因此当前所有插入到画布中的节点都位于主画布(即 graph.getCanvas().main)。因此你可以先通过 graph.getCanvas().main.removeChild(line); 进行删除。
  2. 如果要获取节点的尺寸,比较准确的方式是直接从元素中获取,以下是相关步骤

假定你的开发的 snapline 是一个插件(Plugin),那么你应该可以访问到 Graph 上下文(即 context,或者你可以先临时通过 graph.context) 访问。

const { element } = context; // element 是一个用于管理元素绘制的模块
const node = element.getElement('xxx'); // 参数为元素 ID

针对节点的尺寸有两种情况: a. 如果期望是对节点整体对齐(包括节点的标签文本、徽标等),那么你可以直接通过 node.getBounds() 获取其尺寸 b. 如果期望对节点的主图形(key)进对齐,那么可以使用 node.getShape('key').getBounds() 获取主图形尺寸

感谢回复,好使!

posted by k644606347 10 months ago

Fund this Issue

$0.00
Funded

Pull requests