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();' –