Вопрос:
Мне нужно рисовать графики, представляющие конечные автоматы. Я пытался использовать Graph #. Это круто, но не хватает некоторых вещей. Нет документации, которая делает его очень сложным в использовании, я не могу рисовать циклы (ребра от вершины до себя), используя его собственный элемент управления WPF, и разметка ребер также не реализована. Есть ли какая-либо другая библиотека или рекомендуемый способ рисования графиков в WPF?
Функциональность мне нужна:
- маркировка края
- петлевые (циклические) ребра
- маркировка вершин
- рисование одинарных/двойных кругов вокруг вершин – вершины должны быть представлены в виде круга (или двойного круга) с меткой внутри
Есть идеи?
РЕДАКТИРОВАТЬ:
Я получил несколько предложений, за которые я благодарен. Тем не менее, я думаю, что я не прояснил свою мысль. Мне нужен этот вид графика:
Все предложенные инструменты не подходят для этого или, может быть, я не знаю, как применять их в этой ситуации.
Лучший ответ:
Graphviz + GraphViz С# Wrapper – именно то, что я искал.
Ответ №1Содержание
- Вариант 1: Автоматическая компоновка графиков Microsoft
- GitHub
- Winforms → WPF
- Визуализация узлов и краев с автоматической компоновкой графиков Microsoft
- Примеры
- FAQ
- Вариант 2: QuickGraph – библиотека графиков на 100% С# с поддержкой Graphviz
- Вариант 3: GraphSharp
- Demo
- Примечания
- Вариант 4: Graphviz4net
- Вариант 5: GoDiagram
- Вариант 6: Управление графическим деревом для WPF
- Вариант 7: Использование WPF для визуализации графика с круговыми зависимостями
- Вариант 8: GraphViz
- Источник
- Вариант 9: Shields.GraphViz
- Вариант 10: NetworkView: пользовательский элемент управления WPF для визуализации и редактирования сетей, графиков и блок-схем
- Пример
- Вариант 11: Gephi – платформа Open Graph Viz
- Вариант 12: Telerik
- Вариант 13: Инфраструктура
- Вариант 14: конструктор диаграмм WPF
- Вариант 15: Конструктор диаграмм MVVM
- Вариант 16: yWorks – компания Diagramming
- Вариант 17: MindFusion
- Вариант 18: Dot2WPF
- Вариант 19: SyncFusion
- Вариант 20: AddFlow
- Вариант 21: Lassalle
- Вариант 22: Динамический дисплей данных
- Вариант 23: Nevron
- Условия поиска Google
- Вариант 1: Автоматическая компоновка графиков Microsoft
- GitHub
- Winforms → WPF
- Визуализация узлов и краев с автоматической компоновкой графиков Microsoft
- Примеры
- FAQ
- Вариант 2: QuickGraph – библиотека графиков на 100% С# с поддержкой Graphviz
- Вариант 3: GraphSharp
- Demo
- Примечания
- Вариант 4: Graphviz4net
- Вариант 5: GoDiagram
- Вариант 6: Управление графическим деревом для WPF
- Вариант 7: Использование WPF для визуализации графика с круговыми зависимостями
- Вариант 8: GraphViz
- Источник
- Вариант 9: Shields.GraphViz
- Вариант 10: NetworkView: пользовательский элемент управления WPF для визуализации и редактирования сетей, графиков и блок-схем
- Пример
- Вариант 11: Gephi – платформа Open Graph Viz
- Вариант 12: Telerik
- Вариант 13: Инфраструктура
- Вариант 14: конструктор диаграмм WPF
- Вариант 15: Конструктор диаграмм MVVM
- Вариант 16: yWorks – компания Diagramming
- Вариант 17: MindFusion
- Вариант 18: Dot2WPF
- Вариант 19: SyncFusion
- Вариант 20: AddFlow
- Вариант 21: Lassalle
- Вариант 22: Динамический дисплей данных
- Вариант 23: Nevron
- Условия поиска Google
Вариант 1: Автоматическая компоновка графиков Microsoft
Free
http://research.microsoft.com/en-us/projects/msagl/
GitHub
https://github.com/Microsoft/automatic-graph-layout.git
Winforms → WPF
Это WinForms, но его можно импортировать в WPF с несколькими строками кода.
Визуализация узлов и краев с автоматической компоновкой графиков Microsoft
Примеры
http://research.microsoft.com/en-us/projects/msagl/#Layouts
FAQ
http://research.microsoft.com/en-us/projects/msagl/faq.aspx
Вариант 2: QuickGraph – библиотека графиков на 100% С# с поддержкой Graphviz
Free
Эта библиотека 100% С#. Не вводите в заблуждение строку “Поддержка Graphviz”, это означает, что она использует код С# для импорта вывода из Graphviz. Отсутствует код С++.
http://www.codeproject.com/Articles/5603/QuickGraph-A-C-graph-library-with-Graphviz-Sup
Имеет пакет NuGet.
В разработке с 2003 по 2011 год (8 лет!).
Вариант 3: GraphSharp
Free
- Зависит от QuickGraph (это 100% С#).
- Поддержка async/wait (nice!).
Demo
https://sachabarbs.wordpress.com/2010/08/31/pretty-cool-graphs-in-wpf/
Примечания
Это хорошо работает, он работает и работает через пару часов. Он также поддерживает DataTemplates, поэтому каждый node может иметь любой внешний вид, который вы хотите.
Вариант 4: Graphviz4net
Free
Вариант 5: GoDiagram
$$$
Вариант 6: Управление графическим деревом для WPF
Free
http://www.codeproject.com/Articles/29518/A-Graph-Tree-Drawing-Control-for-WPF
Не подходит. Это дерево.
Вариант 7: Использование WPF для визуализации графика с круговыми зависимостями
Free
http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen
Вариант 8: GraphViz
Free
http://www.graphviz.org/Download..php
Это не С# и использует не управляемый код. Однако для этого существуют обертки С#.
Опираясь на AT & T, см. “Исследователи AT & T – изобретать науку за службой” и “Портфолио исследования” > программные средства “:
Источник
http://www.graphviz.org/Download_source.php
Они также открывают исходный Rserve!
Вариант 9: Shields.GraphViz
Free
Обертка для GraphViz.
https://github.com/timothy-shields/graphviz
Вариант 10: NetworkView: пользовательский элемент управления WPF для визуализации и редактирования сетей, графиков и блок-схем
Free
http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a
Эта библиотека позволяет пользователю создавать соединения между узлами, что, вероятно, является немного избыточным.
Пример
Все это MVVM.
Вариант 11: Gephi – платформа Open Graph Viz
Free
Не графическая библиотека WPF, но дает отличные примеры того, как могут выглядеть действительно красивые графики. Учебное пособие отлично.
Вариант 12: Telerik
$$$
http://www.telerik.com/products/wpf/diagrams.aspx
Вариант 13: Инфраструктура
$$$
Вариант 14: конструктор диаграмм WPF
Free
Не так много графического инструмента, но он показывает вам, как перемещать, изменять размер и вращать объекты любого типа на холсте.
http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1
Вариант 15: Конструктор диаграмм MVVM
Free
И кто-то переопределил это в MVVM: Не так много графического инструмента, но он показывает вам, как перемещать, изменять размер и вращать объекты любого типа на холсте.
http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer
Вариант 16: yWorks – компания Diagramming
$$$
https://www.yworks.com/en/products_yfiles_practicalinfo_gallery.html
https://www.yworks.com/en/products_yfileswpf_about.html
Вариант 17: MindFusion
$$$
http://www.mindfusion.eu/features-wpfdiagram.html
http://www.mindfusion.eu/
Вариант 18: Dot2WPF
Free
Элемент управления WPF для просмотра графиков DOT.
http://www.codeproject.com/Articles/18870/Dot-WPF-a-WPF-control-for-viewing-Dot-graphs
Вариант 19: SyncFusion
$$$
https://www.syncfusion.com/products/wpf/diagram
Вариант 20: AddFlow
$$$
Вариант 21: Lassalle
$$$
Вариант 22: Динамический дисплей данных
Вариант 23: Nevron
$$$
Только для WinForms, но может быть импортирован в WPF. Тем не менее, каждый отдельный элемент не может быть шаблоном, что является большим преимуществом решений WPF.
Условия поиска Google
- “графическое представление рабочего процесса wpf”
- “библиотека графического wpf”
- “wpf state machine library”
Ответ №2
Я думаю, вы можете легко реализовать все свои требования с помощью библиотеки GraphX для WPF. Он основан на графике # и содержит подробные документы.
Он поддерживает краевые лабиринты и самозатухающие ребра вместе с шаблонами ребер и вершин. Если у вас есть какие-либо вопросы, которые вы можете задать в разделе “Обсуждения” на сайте.
Ответ №3
В аналогичном вопросе о двудольных графах, которые вы можете прочитать здесь
Я получил рекомендацию NetworkView
Он имеет петли, маркировку вершин, пользовательскую визуализацию вершин, которую вы можете легко редактировать, чтобы быть кругами. Думаю, у него нет маркировки границ. Просто попробуйте.
По крайней мере, это очень хорошее начало, если вы решите сделать это самостоятельно.
Вероятно, вы хотите посмотреть статью Codeproject “Визуализировать график с круговыми зависимостями”
Ответ №4
Если это в коммерческом сценарии, вы также должны взглянуть на yWorks ‘yFiles.
В нем есть все функции, которые вы ищете, и самая выдающаяся функция – возможность автоматического упорядочивания диаграмм. Если у вас есть больший конечный автомат или даже создается машина состояния в коде, это поможет вам четко организовать даже большие диаграммы автоматически. Также для этикеток существуют автоматические алгоритмы размещения меток, которые находят места размещения для этикеток, чтобы они не перекрывались друг с другом или с другими несвязанными элементами.
Вы можете увидеть, что библиотека находится в действии в этом Youtube Video, но вы также можете играть сразу с “Живые демоверсии Silverlight онлайн” или просто оцените библиотеку и проиграйте с образцами.
Отказ от ответственности: я работаю для yWorks, но на SO я не представляю своего работодателя.
Ответ №5
Вот несколько вариантов:
- VisiFire
- Элементы управления цветом Silverlight, работающие в WPF
- WPF Toolkit
- Telerik
Надеюсь, вы найдете то, что вам нужно. Те, кто стоит денег, также имеют свободный доступ. Вы можете получить неплохие результаты с помощью telerik или visifire!