Ответ 1
Graphviz + GraphViz С# Wrapper - именно то, что я искал.
Мне нужно рисовать графики, представляющие конечные автоматы. Я пытался использовать Graph #. Это круто, но не хватает некоторых вещей. Нет документации, которая делает его очень сложным в использовании, я не могу рисовать циклы (ребра от вершины до себя), используя его собственный элемент управления WPF, и разметка ребер также не реализована. Есть ли какая-либо другая библиотека или рекомендуемый способ рисования графиков в WPF?
Функциональность мне нужна:
Есть идеи?
РЕДАКТИРОВАТЬ:
Я получил несколько предложений, за которые я благодарен. Тем не менее, я думаю, что я не прояснил свою мысль. Мне нужен этот вид графика:
Все предложенные инструменты не подходят для этого или, может быть, я не знаю, как применять их в этой ситуации.
Graphviz + GraphViz С# Wrapper - именно то, что я искал.
Free
http://research.microsoft.com/en-us/projects/msagl/
https://github.com/Microsoft/automatic-graph-layout.git
Это WinForms, но его можно импортировать в WPF с несколькими строками кода.
http://research.microsoft.com/en-us/projects/msagl/#Layouts
http://research.microsoft.com/en-us/projects/msagl/faq.aspx
Free
http://quickgraph.codeplex.com/
Эта библиотека 100% С#. Не вводите в заблуждение строку "Поддержка Graphviz", это означает, что она использует код С# для импорта вывода из Graphviz. Отсутствует код С++.
http://www.codeproject.com/Articles/5603/QuickGraph-A-C-graph-library-with-Graphviz-Sup
Имеет пакет NuGet.
В разработке с 2003 по 2011 год (8 лет!).
Free
http://graphsharp.codeplex.com/
https://sachabarbs.wordpress.com/2010/08/31/pretty-cool-graphs-in-wpf/
Это хорошо работает, он работает и работает через пару часов. Он также поддерживает DataTemplates
, поэтому каждый node может иметь любой внешний вид, который вы хотите.
Free
http://graphviz4net.codeplex.com/
$$$
http://www.nwoods.com/products/godiagram/index.html
Free
http://www.codeproject.com/Articles/29518/A-Graph-Tree-Drawing-Control-for-WPF
Не подходит. Это дерево.
Free
http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen
Free
http://www.graphviz.org/Download..php
Это не С# и использует не управляемый код. Однако для этого существуют обертки С#.
Опираясь на AT & T, см. "Исследователи AT & T - изобретать науку за службой" и "Портфолио исследования" > программные средства ": http://www.research.att.com/software_tools?fbid=NEk8_gxLLEc
http://www.graphviz.org/Download_source.php
Они также открывают исходный Rserve!
Free
Обертка для GraphViz.
https://github.com/timothy-shields/graphviz
Free
http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a
Эта библиотека позволяет пользователю создавать соединения между узлами, что, вероятно, является немного избыточным.
Все это MVVM.
Free
Не графическая библиотека WPF, но дает отличные примеры того, как могут выглядеть действительно красивые графики. Учебное пособие отлично.
$$$
http://www.telerik.com/products/wpf/diagrams.aspx
$$$
http://www.infragistics.com/samples/wpf/network-node/overview http://www.infragistics.com/samples/wpf/network-node/relationship-between-nodes http://www.infragistics.com/samples/wpf/network-node/custom-node-style
Free
Не так много графического инструмента, но он показывает вам, как перемещать, изменять размер и вращать объекты любого типа на холсте.
http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1
Free
И кто-то переопределил это в MVVM: Не так много графического инструмента, но он показывает вам, как перемещать, изменять размер и вращать объекты любого типа на холсте.
http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer
$$$
https://www.yworks.com/en/products_yfiles_practicalinfo_gallery.html https://www.yworks.com/en/products_yfileswpf_about.html
$$$
http://www.mindfusion.eu/features-wpfdiagram.html http://www.mindfusion.eu/
Free
Элемент управления WPF для просмотра графиков DOT.
http://www.codeproject.com/Articles/18870/Dot-WPF-a-WPF-control-for-viewing-Dot-graphs
$$$
https://www.syncfusion.com/products/wpf/diagram
$$$
https://www.componentsource.com/product/addflow-wpf-standard
$$$
http://dynamicdatadisplay.codeplex.com/
$$$
Только для WinForms, но может быть импортирован в WPF. Тем не менее, каждый отдельный элемент не может быть шаблоном, что является большим преимуществом решений WPF.
Я думаю, вы можете легко реализовать все свои требования с помощью библиотеки GraphX для WPF. Он основан на графике # и содержит подробные документы. http://panthernet.ru/en/projects-en/graphx-en
Он поддерживает краевые лабиринты и самозатухающие ребра вместе с шаблонами ребер и вершин. Если у вас есть какие-либо вопросы, которые вы можете задать в разделе "Обсуждения" на сайте.
В аналогичном вопросе о двудольных графах, которые вы можете прочитать здесь Я получил рекомендацию NetworkView
Он имеет петли, маркировку вершин, пользовательскую визуализацию вершин, которую вы можете легко редактировать, чтобы быть кругами. Думаю, у него нет маркировки границ. Просто попробуйте.
По крайней мере, это очень хорошее начало, если вы решите сделать это самостоятельно.
Вероятно, вы хотите посмотреть статью Codeproject "Визуализировать график с круговыми зависимостями"
Если это в коммерческом сценарии, вы также должны взглянуть на yWorks 'yFiles.
В нем есть все функции, которые вы ищете, и самая выдающаяся функция - возможность автоматического упорядочивания диаграмм. Если у вас есть больший конечный автомат или даже создается машина состояния в коде, это поможет вам четко организовать даже большие диаграммы автоматически. Также для этикеток существуют автоматические алгоритмы размещения меток, которые находят места размещения для этикеток, чтобы они не перекрывались друг с другом или с другими несвязанными элементами.
Вы можете увидеть, что библиотека находится в действии в этом Youtube Video, но вы также можете играть сразу с "Живые демоверсии Silverlight онлайн" или просто оцените библиотеку и проиграйте с образцами.
Отказ от ответственности: я работаю для yWorks, но на SO я не представляю своего работодателя.
Вот несколько вариантов:
Надеюсь, вы найдете то, что вам нужно. Те, кто стоит денег, также имеют свободный доступ. Вы можете получить неплохие результаты с помощью telerik или visifire!