32

我正在将 WPF 与 graph# 库一起使用,并且我正在尝试将图形绘制为线性链,因此我定义了一些顶点和连接它们的边

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

但问题是结果图没有按预期绘制,如下所示:

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

换句话说,顶点 3 是通过顶点 1 到达顶点 4。

这是绘图方法的代码

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

这是与graph相关的xaml代码的一部分#

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

1 回答 1

1

我已经尝试过这段代码,据我所知,它没有任何问题。可能是某些库引用不同步(QuickGraph-GraphSharp)。我重新编译了 Graph#-Controls 并将其全部组合到一个解决方案中。我删除了 XAML 中的绑定并将图形加载到 MainWindow 的构造函数中。

我从代码中得到的结果图是:0 -> 1 -> 2 -> 3-> 4 而不是:1 -> 2 -> 3 -> 1-> 4。您可以在此处下载完整的源代码亲眼看看。


更多参考资料

于 2012-10-20T01:32:33.430 回答