我使用 Graphviz(主要是 dot 和 fdp)来自动生成一些我需要的图表。对于这些图表,我需要一些不属于标准箭头集合的特殊箭头:在一个大的白色三角形内有一个小的黑色三角形,黑色三角形指向下方也是如此。
添加此类箭头的最佳方法是什么?如有必要,我不介意破解源代码。我应该从哪里开始?
最佳答案
您必须为此更改源代码。看看“lib/common/arrows.c”。
你会发现你必须:
为了编写你的函数,看看arrow_type_normal(),它有6个参数:job(你不必关心这个,就像在这个函数中一样使用它),两个点('p'和'u' )、箭头大小、笔宽和标志。
如果您不关心制作不同版本的箭头,或者如果您希望忽略修饰符(反向箭头等),请忽略 flag 参数。
然后,该函数基本上采用两个点 p 和 u(它们是具有 'x' 和 'y' 属性的结构)并将它们组合起来创建一个名为 a[] 的数组,传递给 gvrender_polygon() 最终将呈现你的箭头形状.
arrow_type_normal() 也弄乱了笔宽和箭头宽度。
总结:准备graphviz在第一步接受你的箭头名称,然后创建一个函数来创建箭头形状并调用gvrender_polygon或gvrender_polyline(如果你愿意)。
我还没有尝试,但它应该工作。
关于graphviz - 如何在 Graphviz 中编写自定义箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179259/