gpt4 book ai didi

graphviz - 关于 Graphviz API 的问题(Graphviz 作为一个库)

转载 作者:行者123 更新时间:2023-12-03 22:21:57 29 4
gpt4 key购买 nike

我将 Graphviz 用作库 (C++)。我需要 Graphviz 来计算节点和相应边的坐标。我正在渲染自己(即不使用 Graphviz 的渲染器)。我的节点是矩形,具有定义的宽度和高度(以像素为单位)。

我使用 agopen 创建图表。然后我用 agnode 创建节点,用 agedge 创建边。然后,据我所知,应该使用 gvLayout 来计算坐标。

现在我需要知道:

  1. 如何在使用gvLayout之前指定节点矩形的宽度和高度?

  2. gvLayout之后,如何计算节点的坐标和边的样条?

  3. 如何从图 (Agraph_t) 中删除节点(和相应的边)或边,这完全可以做到吗?

  4. 当我使用 agnodeagedge 创建节点和边缘时,我不需要释放/删除它们以进行清理(当我完成图形)?还是 agclose 隐式处理此问题?

重要:我不想使用基于文本的界面(即以文本形式获取参数),我想访问提到的参数(节点的宽度和高度、边的样条线、坐标node...) 直接作为数据变量。

最佳答案

为之前的回复添加更多细节:

1) 节点的宽度由多个属性决定:“width”属性指定最小宽度;节点中标签或图像的宽度;标签周围边距的“边距”属性;周边的数量;等 如果你真的想固定宽度,将“width”属性设置为所需的值,并将“fixedsize”设置为 1。如上所述,您使用 agset 函数设置属性,该函数假定该属性先前已使用 agnodeattr 函数声明,用于节点。或者只使用结合了这些操作的 agsafeset。

2) 如果 n 是一个节点指针,它的位置作为一个 (x,y) 对存储在 ND_coord(n) 中。如果 e 是边指针,则值 ED_spl(e) 指向包含描述三次 B 样条的结构数组的结构。 (通常只有一个。)如果 bz = ED_spl(e)->list[0],则 *bz 包含点数字段、点数以及边是否有箭头的信息/或尾部。描述了这些值的含义 here

3) 要从图 g 中删除节点 n,请使用 agdelete(g, n);

4) 在图上调用 agclose 将自动释放所有节点和边。如果你已经调用了 gvLayout,你首先需要调用 gvFreeLayout 来释放分配给布局的数据。

您可能会发现 this文档很有帮助。

关于graphviz - 关于 Graphviz API 的问题(Graphviz 作为一个库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734936/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com