0
我希望我不會顯得懶惰,但我真的很努力使用QuickGraph和GraphViz繪製圖形,因爲我無法在網上找到很多文檔。我對C#接口很陌生,所以我也發現它們很混亂。任何人都可以給我一個簡單的工作例子,或指導我一些很好的例子和文檔?C#使用QuickGraph和GraphViz繪製圖形
謝謝。
我希望我不會顯得懶惰,但我真的很努力使用QuickGraph和GraphViz繪製圖形,因爲我無法在網上找到很多文檔。我對C#接口很陌生,所以我也發現它們很混亂。任何人都可以給我一個簡單的工作例子,或指導我一些很好的例子和文檔?C#使用QuickGraph和GraphViz繪製圖形
謝謝。
Quickgraph-to-Graphviz-export無法寫入文件,因此您需要實現處理文件寫入的IDotEngine。
public class FileDotEngine : IDotEngine
{
public string Run(GraphvizImageType imageType, string dot, string outputFileName)
{
using (StreamWriter writer = new StreamWriter(outputFileName))
{
writer.Write(dot);
}
return System.IO.Path.GetFileName(outputFileName);
}
}
然後你就可以調用Graphviz的算法是這樣的:
GraphvizAlgorithm<TNode, TEdge> graphviz = new GraphvizAlgorithm<TNode, TEdge>(this.Graph);
graphviz.FormatVertex += (sender, args) => args.VertexFormatter.Comment = args.Vertex.Label;
graphviz.FormatEdge += (sender, args) => { args.EdgeFormatter.Label.Value = args.Edge.Label; };
graphviz.Generate(new FileDotEngine(), filePath);
創建的dotfile可以傳遞給graphviz的。 See Graphviz Dot usage here in the dotguide
謝謝你clx。該程序現在生成一個圖形,但頂點沒有正確標記。我想這與'FormatVertex'和'FormatEdge'事件處理線有關。但是,我的IDE不喜歡'args.Vertex.Label'或'args.Edge.Label'中的'標籤'。任何想法爲什麼不呢? –
@LordCat'TNode'和'TEdge'中沒有'Label'屬性。從[GitHub上的這個示例]開始(https://github.com/serra/QuickgraphExamples/blob/master/src/examples/Support/Visualizer.cs#L55),也許你應該對'.FormatEdge'事件不做任何事情;和'.FormatVertex',只要'args.VertexFormatter.Label = args.Vertex.ToString();' –