32 votes

Le graphique dans WPF utilisant le graphique # n'est pas dessiné en tant que chaîne

Je suis en utilisant WPF avec le graphique# bibliothèque et je suis en train de dessiner un graphe comme une chaîne linéaire, donc j'ai défini quelques sommets, les arêtes et les à se joindre à eux en tant que

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

Mais le problème est que le graphe obtenu n'est pas dessiné comme prévu, il ressemble à la suivante:

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

En d'autres termes, le vertex 3 est en passant par le sommet 1 pour atteindre le sommet 4.

Voici le code de la méthode de dessin

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;
}

Et voici une partie du code xaml liées à la graphique#

<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>

1voto

pjdevries Points 624

J'ai essayé ce code et de ce que je peux voir il n'y a rien de mal à cela. Il se peut qu'une partie de la bibliothèque de références de synchronisation (QuickGraph-GraphSharp). J'ai recompilé le Graphique#-Contrôle et ajustement de l'ensemble de la solution. J'ai supprimé la Liaison en XAML et chargé le graphique dans le constructeur de MainWindow.

Le graphique obtenu, que je reçois à partir du code est: 0 -> 1 -> 2 -> 3-> 4 et pas: 1 -> 2 -> 3 -> 1-> 4. Vous pouvez télécharger le code source ici pour voir par vous-même.


Autres Références

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X