WPF中使用graph#绘制的图形不成链状

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>

8
我已经尝试了您以上粘贴的代码,但在本地无法重现 - 我得到了预期的 0 -> 1 -> 2 -> 3 -> 4 - Alex Humphrey
1
你粘贴的代码运行正常。你是否使用最新版本? - Judah Gabriel Himango
1个回答

1

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

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


更多参考资料


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接