2015-08-28 4 views
0

Надеюсь, что я не представляюсь ленивым, но я действительно пытаюсь нарисовать график, используя QuickGraph и GraphViz, поскольку я не могу найти много документации в Интернете. Я совершенно новичок в интерфейсах C#, поэтому считаю их довольно запутанными. Кто-нибудь сможет дать мне простой рабочий пример или направить мне несколько хороших примеров и документации?C# Рисование графика с использованием QuickGraph и GraphViz

спасибо.

ответ

0

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

+0

спасибо clx. Теперь программа создает граф, но вершины не помечены правильно. Я полагаю, что это связано с линиями обработки событий «FormatVertex» и «FormatEdge». Однако моей среде IDE не нравится «Label» в «args.Vertex.Label» или «args.Edge.Label». Любая идея, почему бы и нет? –

+0

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

Смежные вопросы