Как легко рисовать графики в WPF?

c#
Вопрос: Мне нужно рисовать графики, представляющие конечные автоматы. Я пытался использовать Graph #. Это круто, но не хватает некоторых вещей. Нет документации, которая делает его очень сложным в использовании, я не могу рисовать циклы (ребра от вершины до себя), используя его собственный элемент управления WPF, и разметка ребер также не реализована. Есть ли какая-либо другая

Вопрос:

Мне нужно рисовать графики, представляющие конечные автоматы. Я пытался использовать Graph #. Это круто, но не хватает некоторых вещей. Нет документации, которая делает его очень сложным в использовании, я не могу рисовать циклы (ребра от вершины до себя), используя его собственный элемент управления WPF, и разметка ребер также не реализована. Есть ли какая-либо другая библиотека или рекомендуемый способ рисования графиков в WPF?

Функциональность мне нужна:

  • маркировка края
  • петлевые (циклические) ребра
  • маркировка вершин
  • рисование одинарных/двойных кругов вокруг вершин – вершины должны быть представлены в виде круга (или двойного круга) с меткой внутри

Есть идеи?

РЕДАКТИРОВАТЬ:

Я получил несколько предложений, за которые я благодарен. Тем не менее, я думаю, что я не прояснил свою мысль. Мне нужен этот вид графика:

http://static.max99x.com/school/automata-editor1.png.

Все предложенные инструменты не подходят для этого или, может быть, я не знаю, как применять их в этой ситуации.

Лучший ответ:

Graphviz + GraphViz С# Wrapper – именно то, что я искал.

Ответ №1Содержание

  1. Вариант 1: Автоматическая компоновка графиков Microsoft
  2. GitHub
  3. Winforms → WPF
  4. Визуализация узлов и краев с автоматической компоновкой графиков Microsoft
  5. Примеры
  6. FAQ
  7. Вариант 2: QuickGraph – библиотека графиков на 100% С# с поддержкой Graphviz
  8. Вариант 3: GraphSharp
  9. Demo
  10. Примечания
  11. Вариант 4: Graphviz4net
  12. Вариант 5: GoDiagram
  13. Вариант 6: Управление графическим деревом для WPF
  14. Вариант 7: Использование WPF для визуализации графика с круговыми зависимостями
  15. Вариант 8: GraphViz
  16. Источник
  17. Вариант 9: Shields.GraphViz
  18. Вариант 10: NetworkView: пользовательский элемент управления WPF для визуализации и редактирования сетей, графиков и блок-схем
  19. Пример
  20. Вариант 11: Gephi – платформа Open Graph Viz
  21. Вариант 12: Telerik
  22. Вариант 13: Инфраструктура
  23. Вариант 14: конструктор диаграмм WPF
  24. Вариант 15: Конструктор диаграмм MVVM
  25. Вариант 16: yWorks – компания Diagramming
  26. Вариант 17: MindFusion
  27. Вариант 18: Dot2WPF
  28. Вариант 19: SyncFusion
  29. Вариант 20: AddFlow
  30. Вариант 21: Lassalle
  31. Вариант 22: Динамический дисплей данных
  32. Вариант 23: Nevron
  33. Условия поиска Google
Содержание
  1. Вариант 1: Автоматическая компоновка графиков Microsoft
  2. GitHub
  3. Winforms → WPF
  4. Визуализация узлов и краев с автоматической компоновкой графиков Microsoft
  5. Примеры
  6. FAQ
  7. Вариант 2: QuickGraph – библиотека графиков на 100% С# с поддержкой Graphviz
  8. Вариант 3: GraphSharp
  9. Demo
  10. Примечания
  11. Вариант 4: Graphviz4net
  12. Вариант 5: GoDiagram
  13. Вариант 6: Управление графическим деревом для WPF
  14. Вариант 7: Использование WPF для визуализации графика с круговыми зависимостями
  15. Вариант 8: GraphViz
  16. Источник
  17. Вариант 9: Shields.GraphViz
  18. Вариант 10: NetworkView: пользовательский элемент управления WPF для визуализации и редактирования сетей, графиков и блок-схем
  19. Пример
  20. Вариант 11: Gephi – платформа Open Graph Viz
  21. Вариант 12: Telerik
  22. Вариант 13: Инфраструктура
  23. Вариант 14: конструктор диаграмм WPF
  24. Вариант 15: Конструктор диаграмм MVVM
  25. Вариант 16: yWorks – компания Diagramming
  26. Вариант 17: MindFusion
  27. Вариант 18: Dot2WPF
  28. Вариант 19: SyncFusion
  29. Вариант 20: AddFlow
  30. Вариант 21: Lassalle
  31. Вариант 22: Динамический дисплей данных
  32. Вариант 23: Nevron
  33. Условия поиска 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

Эта библиотека позволяет пользователю создавать соединения между узлами, что, вероятно, является немного избыточным.

Пример

https://channel9.msdn.com/coding4fun/blog/Noodling-Network-Nodes-Diagraming-with-the-NetworkView-custom-WPF-control

Все это MVVM.

Вариант 11: Gephi – платформа Open Graph Viz

Free

См. http://gephi.github.io/

Не графическая библиотека 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

$$$

http://www.lassalle.com/

Вариант 22: Динамический дисплей данных

Вариант 23: Nevron

$$$

https://www.nevron.com/

Только для 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!

Оцените статью
Добавить комментарий