Domanda

Ho fatto un grafico con StaticLayout e forme \ colori di vertici modificati. Non mi trasformo tutto ciò che riguarda i bordi. Tutti i bordi sono diretti, ma alcuni di essi mancano le frecce! Come è potuto accadere?

screenshot

Grafico codice di visualizzazione:

    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();

Grafici è

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

ed i bordi sono creati così

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

Grazie

È stato utile?

Soluzione

Il posizionamento freccia è fatto suddividendo il bordo fino a quando il segmento di gran lunga è racchiuso nella forma vertice, poi si spostano indietro di una. Se l'endpoint lontano non è all'interno della forma vertice quando inizia funzionamento, ci dovrebbe essere un eccezione generata. Hai scelto la soluzione corretta, che è quello di centrare le forme di vertice sull'origine prima di essere tradotti in luogo. Tom Nelson

Altri suggerimenti

Il problema è causato da EdgeRenderer. Si confonde se i bordi sono collegati all'angolo superiore sinistro del vertice. Quando ho cambiato le mie forme da

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

a

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

I punti di collegamento spostato al centro dei vertici e da lì EdgeRenderer fa la sua magia senza problemi. Tuttavia, non capisco perché cambiando la posizione del telaio di una forma rende questa differenza. Sarebbe contento se qualcuno potesse spiegare questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top