¿Cómo dibujar fácilmente gráficos en WPF? [cerrado]


Necesito dibujar gráficos que representen máquinas de estados finitos. Traté de usar Gráfico#. Está bien, pero le faltan algunas cosas. No hay documentación, lo que hace que sea muy difícil de usar, no puedo dibujar bucles (bordes de un vértice a sí mismo) utilizando su control personalizado WPF y bordes de etiquetado tampoco está implementado. ¿Hay alguna otra biblioteca o forma aconsejada de dibujar gráficos en WPF?

Funcionalidad que necesito:

  • etiquetado de bordes
  • bucle (cíclico) aristas
  • etiquetado de vértices
  • dibujando círculos simples / dobles alrededor de vértices: los vértices deben representarse como un círculo (o un círculo doble) con una etiqueta dentro de

¿Alguna idea?

EDIT: Tengo algunas proposiciones, por las que estoy agradecido. Sin embargo, creo que no he dejado claro mi pensamiento. Necesito este tipo de gráfico: http://static.max99x.com/school/automata-editor1.png . Todas las herramientas sugeridas hasta ahora no son adecuadas para esto o tal vez no se cómo aplicar en esta situación.

Author: pmichna, 2013-05-10

6 answers

Opción 1: Microsoft Automatic Graph Layout

Libre

Http://research.microsoft.com/en-us/projects/msagl /

GitHub

Https://github.com/Microsoft/automatic-graph-layout.git

Winforms > > WPF

Es WinForms, pero se puede importar a WPF con unas pocas líneas de código.

Visualización de nodos y bordes con Microsoft Automatic Graph Layout

Http://www.codeguru.com/csharp/.net/net_wpf/article.php/c16963/Visualizing-Nodes-and-Edges-with-Microsoft-Automatic-Graph-Layout.htm

Ejemplos

Http://research.microsoft.com/en-us/projects/msagl/#Layouts

FAQ

Http://research.microsoft.com/en-us/projects/msagl/faq.aspx

Opción 2: QuickGraph - Una biblioteca de gráficos 100% C# con Graphviz Soporte

Libre

Http://quickgraph.codeplex.com /

Esta biblioteca es 100% C#. No se deje engañar por la línea "Graphviz Support", esto significa que utiliza código C# para importar la salida de Graphviz. No hay código C++ a la vista.

Http://www.codeproject.com/Articles/5603/QuickGraph-A-C-graph-library-with-Graphviz-Sup

Tiene un paquete NuGet.

En desarrollo de 2003 a 2011 (¡8 años!!).

Opción 3: GraphSharp

Libre

Http://graphsharp.codeplex.com /

  • Depende de QuickGraph (que es 100% C#).
  • Soporta async / await (nice!).

Demo

Https://sachabarbs.wordpress.com/2010/08/31/pretty-cool-graphs-in-wpf /

Notas

Este funcionó muy bien, estaba listo y funcionando en un par de horas. También es compatible con DataTemplates, por lo que cada nodo puede tener la apariencia que desee.

Opción 4: Graphviz4net

Libre

Http://graphviz4net.codeplex.com /

Opción 5: GoDiagram

$$$

Http://www.nwoods.com/products/godiagram/index.html

Opción 6: Un Control de Dibujo de Árbol de Grafos para WPF

Libre

Http://www.codeproject.com/Articles/29518/A-Graph-Tree-Drawing-Control-for-WPF

No es adecuado. Es un diseño de árbol.

Opción 7: Usar WPF para Visualizar un Gráfico con Circular Dependencias

Libre

Http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen

Opción 8: GraphViz

Libre

Http://www.graphviz.org/Download..php

Esto no es C#, y utiliza código no administrado. Sin embargo, hay envoltorios de C# para ello.

Abierto por AT & T, consulte "Investigadores de AT&T - Inventando la Ciencia Detrás del Servicio" y "inicio de investigación > portafolio > software herramienta": http://www.research.att.com/software_tools?fbid=NEk8_gxLLEc

Fuente

Http://www.graphviz.org/Download_source.php

También de código abierto Rserve!

Opción 9: Escudos.GraphViz

Libre

Envoltura para GraphViz.

Https://github.com/timothy-shields/graphviz

Opción 10: NetworkView: Un control personalizado de WPF para visualizar y editar redes, gráficos y diagramas de flujo

Libre

Http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a

Esta biblioteca permite al usuario crear conexiones entre nodos, lo cual es probablemente un poco exagerado.

Ejemplo

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

Todo es MVVM.

Opción 11: Gephi - La Visualización de Gráficos Abiertos Plataforma

Libre

Véase http://gephi.github.io /

No es una biblioteca de gráficos WPF, pero proporciona grandes ejemplos de cómo se pueden ver los gráficos realmente agradables. El tutorial es excelente.

Opción 12: Telerik

$$$

Http://www.telerik.com/products/wpf/diagrams.aspx

Opción 13: Infragistics

$$$

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

Opción 14: Diseñador de diagramas WPF

Libre

No tanto herramienta de gráficos, pero sí le muestra cómo mover, cambiar el tamaño y rotar objetos de cualquier tipo en un lienzo.

Http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1

Opción 15: Diagrama MVVM Diseñador

Libre

Y, alguien reimplementó esto en MVVM: No tanto la herramienta de gráficos, pero sí le muestra cómo mover, cambiar el tamaño y rotar objetos de cualquier tipo en un lienzo.

Http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer

Opción 16: yWorks-La compañía de Diagramación

$$$

Https://www.yworks.com/en/products_yfiles_practicalinfo_gallery.html https://www.yworks.com/en/products_yfileswpf_about.html

Opción 17: MindFusion

$$$

Http://www.mindfusion.eu/features-wpfdiagram.html http://www.mindfusion.eu /

Opción 18: Dot2WPF

Libre

Un control WPF para ver gráficos DE PUNTOS.

Http://www.codeproject.com/Articles/18870/Dot-WPF-a-WPF-control-for-viewing-Dot-graphs

Opción 19: SyncFusion

$$$

Https://www.syncfusion.com/products/wpf/diagram

Opción 20: AddFlow

$$$

Https://www.componentsource.com/product/addflow-wpf-standard

Opción 21: Lassalle

$$$

Http://www.lassalle.com/

Opción 22: Visualización dinámica de datos

Http://dynamicdatadisplay.codeplex.com /

Opción 23: Nevron

$$$

Https://www.nevron.com/

Solo para WinForms, pero se puede importar a WPF. Sin embargo, cada elemento individual no se puede templar, lo cual es una gran ventaja de las soluciones WPF.

Términos de búsqueda de Google

  • "workflow wpf graphing"
  • "biblioteca gráfica wpf"
  • "biblioteca de máquinas de estado wpf"
 46
Author: Contango,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-24 10:41:32

Graphviz + GraphViz C # Wrapper son exactamente lo que estaba buscando.

 7
Author: pmichna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-18 14:18:47

Creo que puede implementar fácilmente todos sus requisitos con GraphX library para WPF. Se basa en el gráfico# y tiene documentos detallados. http://panthernet.ru/en/projects-en/graphx-en

Admite el etiquetado de bordes y los bordes auto-en bucle junto con las plantillas de bordes y vértices. Si usted tiene alguna pregunta que puede hacer en la sección de Discusiones en el sitio.

 3
Author: Alexander Smirnov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-14 19:44:55

En una pregunta similar sobre gráficos bipartitos que usted puede leer aquí Recibí la recomendación en NetworkView

Tiene bucles, etiquetado de vértices, una visualización de vértices personalizada que puede editar fácilmente para ser círculos. Creo que no tiene etiquetado de borde, sin embargo. Sólo inténtalo.

Al menos es un muy buen comienzo si decides hacerlo por tu cuenta.

Probablemente quieras echar un vistazo a el artículo de Codeproject " Visualiza un gráfico con circular dependencias"

 2
Author: Mare Infinitus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:01

Si esto es en un escenario comercial, también debe echar un vistazo a yWorks' yFiles.

Tiene todas las características que está buscando y su característica más destacada es la capacidad de organizar automáticamente sus diagramas. Si tiene una máquina de estados más grande o incluso crea la máquina de estados en código, esto le ayudará a organizar claramente incluso diagramas grandes automáticamente. También para las etiquetas hay algoritmos automáticos de colocación de etiquetas, que encuentran ubicaciones para el etiquetas para que no se superpongan entre sí o con otros elementos no relacionados.

Puede ver la biblioteca en vivo en acción en este Video de Youtube, pero también puede reproducir inmediatamente con las demostraciones en línea de Silverlight live o simplemente evaluar la biblioteca y jugar con las fuentes de muestra.

Descargo de responsabilidad: Trabajo para yWorks, pero no represento a mi empleador.

 2
Author: Sebastian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-18 11:59:16

Estas son algunas opciones:

Espero que encuentres lo que necesitas. Los que cuestan dinero también tienen un rastro libre disponible. Usted puede obtener algunos resultados bastante agradables con telerik o visifire!

 1
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-10 14:47:37