2012-04-15 4 views
32

Sto usando WPF con la libreria del grafico # e sto provando a disegnare un grafico come una catena lineare, quindi ho definito alcuni vertici e i bordi che li univano comeIl grafico in WPF utilizzando il grafico # non è disegnato come una catena

new Edge<object>(vertices[i], vertices[i+1]) 

Ma il problema è che il grafico risultante non viene disegnato come previsto, è come il seguente:

1 -> 2 -> 3 -> 1-> 4

In altre parole, il vertice 3 sta attraversando il vertice 1 per raggiungere il vertice 4.

Ecco il codice del metodo di disegno

private void CreateGraphToVisualize() 
{ 
    var g = new BidirectionalGraph<object, IEdge<object>>(); 

    // add the vertices to the graph 
    string[] vertices = new string[5]; 
    for (int i = 0; i < 5; i++) 
    { 
     vertices[i] = i.ToString(); 
     g.AddVertex(vertices[i]); 
    } 

    // add edges to the graph 
    g.AddEdge(new Edge<object>(vertices[0], vertices[1])); 
    g.AddEdge(new Edge<object>(vertices[1], vertices[2])); 
    g.AddEdge(new Edge<object>(vertices[2], vertices[3])); 
    g.AddEdge(new Edge<object>(vertices[3], vertices[4])); 

    GraphToVisualize = g; 
} 

Ed ecco una parte del codice XAML relative al grafico #

<DockPanel Grid.Row="2" Margin="10,10,13,10"> 
    <zoom:ZoomControl> 
     <graphsharp:GraphLayout x:Name="graphLayout" 
          Graph="{Binding ElementName=root,Path=GraphToVisualize}" 
          LayoutAlgorithmType="FR" 
          OverlapRemovalAlgorithmType="FSA" 
          HighlightAlgorithmType="Simple"/> 
    </zoom:ZoomControl> 
</DockPanel> 
+8

che ho provato il codice che hai incollato sopra e non in grado di riprodurre a livello locale - ottengo '0 -> 1 -> 2 -> 3 -> 4' come previsto. –

+1

Il codice incollato funziona correttamente. Stai usando l'ultima versione? –

risposta

1

Ho provato questo codice e da quello che posso vedere non c'è nulla di male con esso. Può darsi che alcuni riferimenti bibliografici non siano sincronizzati (QuickGraph-GraphSharp). Ho ricompilato i grafici n. -Controls e li ho adattati tutti insieme nell'unica soluzione. Ho rimosso il binding in XAML e caricato il grafico nel costruttore di MainWindow.

Il grafico risultante che ottengo dal codice è: 0 -> 1 -> 2 -> 3-> 4 e non: 1 -> 2 -> 3 -> 1-> 4. È possibile scaricare il codice sorgente completo here da vedere per te.


Ulteriori riferimenti