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 не нравится «Label» в «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(); ' –