我正在处理一个项目,它会在图表中呈现不同大小的顶点(根据其相对工作量)。
当我关闭顶点的动态调整大小时会发生这种情况:
所以这里一切都是正确的。连接圆圈恰好位于圆形形状的边框上。
此结果通过清单1 中的代码实现。
在这里你可以看到,连接圈位于边框附近,但总是缺少正确的位置。
此结果通过清单2 中的代码实现。
viewer.getRenderContext().setVertexShapeTransformer(vertex -> {
return vertex.getShape();
});
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 ?
我想这个问题的答案将导致: