32

グラフ#ライブラリでWPFを使用していて、グラフを線形チェーンとして描画しようとしているので、いくつかの頂点とそれらを結合するエッジを次のように定義しました。

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 を再コンパイルし、すべてを 1 つのソリューションにまとめました。XAML で Binding を削除し、グラフを MainWindow のコンストラクターにロードしました。

コードから取得した結果のグラフは、0 -> 1 -> 2 -> 3-> 4 であり、 1 -> 2 -> 3 -> 1-> 4 ではありません。完全なソースコードはこちらからダウンロードできます。自分の目で確かめてください。


その他の参考文献

于 2012-10-20T01:32:33.430 に答える