JUNG:如何正确放置箭头以动态调整顶点形状的大小?

时间:2016-03-20 09:37:33

标签: java graphics jung jung2

简介

我正在处理一个项目,它会在图表中呈现不同大小的顶点(根据其相对工作量)。

问题

我期望它如何运作

当我关闭顶点的动态调整大小时会发生这种情况:

enter image description here

所以这里一切都是正确的。连接圆圈恰好位于圆形形状的边框上。

此结果通过清单1 中的代码实现。

动态调整大小时实际发生了什么

在这里你可以看到,连接圈位于边框附近,但总是缺少正确的位置。

enter image description here

此结果通过清单2 中的代码实现。

清单1 - 不调整大小

viewer.getRenderContext().setVertexShapeTransformer(vertex -> {
    return vertex.getShape();
});

清单2 - 调整大小

viewer.getRenderContext().setVertexShapeTransformer(vertex -> {
    double localWorkload = vertex.getLocalWorkload();
    double globalWorkload = graph.getGlobalWorkload();
    double relation = local / global;
    return AffineTransform.getScaledInstance(relation, relation).createTransformedShape(vertex.getShape());
});

实际上,我懒得预先计算10个不同大小的顶点'顶点内的形状。但是这段代码片段更加清晰,并且取得了相同的结果(尽管性能不尽相同)。

我已经尝试过并查看了

这一切都发生在edu.uci.ics.jung.visualization.renderers包中。

  • 检查BasicEdgeArrowRenderingSupport课程,了解我可能用来解决此问题的任何内容
  • 检查PathIterator
  • 中的BasicEdgeArrowRenderingSupport是否为“平坦度”
  • 检查是否是arrowPlacementTollerance参数

问题

如何实现清单1 所产生的预期结果,但动态调整大小,如清单2

我想这个问题的答案将导致:

  • 我做了一些基本的失败(逻辑或编程)
  • 或者它是边缘箭头渲染支持的基本问题

0 个答案:

没有答案