1

我用 StaticLayout 制作了一个图形并更改了顶点的形状\颜色。我没有转换任何与边缘相关的东西。所有的边都是有向的,但其中一些错过了箭头!怎么会这样?

截屏

图形可视化代码:

    Layout<Object, String> layout = new StaticLayout<Object, String>(graphProvider.graphFor(market),new MarketVertexLayoutTransformer(market,panel.getMarketGraphPane().getSize() )) ;
    layout.setSize(panel.getMarketGraphPane().getSize());
    VisualizationViewer<Object,String> graphPanel = new VisualizationViewer<Object,String>(layout);
    graphPanel.getRenderContext().setVertexShapeTransformer(new MarketVertexShapeTransformer());
    graphPanel.getRenderContext().setVertexFillPaintTransformer(new MarketVertexColorTransformer());
    panel.getMarketGraphPane().add(graphPanel, BorderLayout.CENTER);
    panel.getMarketGraphPane().revalidate();

图表是

graph = new DirectedSparseGraph<Object, String>();

和边缘是这样创建的

   graph.addEdge(bundle.getGood()+"->"+transformation,bundle.getGood(),transformation);
   graph.addEdge(transformation+"->"+bundle.getGood(),transformation,bundle.getGood());

谢谢

4

2 回答 2

2

箭头放置是通过细分边直到远段包含在顶点形状中来完成的,然后向后移动一个。如果操作开始时远端不在顶点形状内,则应该抛出异常。您选择了正确的解决方案,即在将顶点形状转换到位之前将它们置于原点的中心。汤姆·纳尔逊

于 2011-10-20T20:11:15.157 回答
0

该问题是由 EdgeRenderer 引起的。如果边连接到顶点的左上角,就会感到困惑。当我改变我的形状时

CIRCLE(new Ellipse2D.Double(0,0,40,40)),
BOX(new Rectangle2D.Double(0,0,40,40));

CIRCLE(new Ellipse2D.Double(-20,-20,40,40)),
BOX(new Rectangle2D.Double(-20,-20,40,40));

连接点移动到顶点的中心,EdgeRenderer 从那里毫无问题地发挥它的魔力。但是,我不明白为什么改变形状的框架位置会产生这种差异。如果有人能解释这一点会很高兴。

于 2011-10-20T12:08:22.420 回答