niños - librerias para dibujar en c#
¿Cómo dibujar fácilmente gráficos en WPF? (6)
Necesito dibujar gráficos que representen máquinas de estados finitos. Intenté usar el Graph# . Es genial, 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 WPF personalizado y el etiquetado de bordes tampoco está implementado. ¿Hay alguna otra biblioteca o forma aconsejada de dibujar gráficos en WPF?
Funcionalidad que necesito:
- etiquetado de bordes
- aristas de bucle (cíclicas)
- etiquetado de vértice
- dibujar círculos simples / dobles alrededor de los vértices: los vértices deben representarse como un círculo (o un doble círculo) con una etiqueta dentro
¿Algunas ideas?
EDITAR: Tengo algunas proposiciones, por lo 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 quizás no sé cómo aplicarlas en esta situación.
Opción 1: diseño gráfico automático de Microsoft
Gratis
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 el diseño de gráfico automático de Microsoft
Ejemplos
http://research.microsoft.com/en-us/projects/msagl/#Layouts
Preguntas más frecuentes
http://research.microsoft.com/en-us/projects/msagl/faq.aspx
Opción 2: QuickGraph - Una biblioteca de gráficos 100% C # con soporte Graphviz
Gratis
http://quickgraph.codeplex.com/
Esta biblioteca es 100% C #. No se deje engañar por la línea "Soporte de Graphviz", esto significa que utiliza el código C # para importar el resultado 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 de NuGet.
En desarrollo desde 2003 hasta 2011 (8 años !!).
Opción 3: GraphSharp
Gratis
- Depende de QuickGraph (que es 100% C #).
- Soporta async / await (¡bien!).
Manifestación
https://sachabarbs.wordpress.com/2010/08/31/pretty-cool-graphs-in-wpf/
Notas
Este funcionó muy bien, estuvo funcionando en un par de horas. También admite DataTemplates
, por lo que cada nodo puede tener el aspecto que desee.
Opción 4: Graphviz4net
Gratis
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 gráfico para WPF
Gratis
http://www.codeproject.com/Articles/29518/A-Graph-Tree-Drawing-Control-for-WPF
Inadecuado. Es un diseño de árbol.
Opción 7: usar WPF para visualizar un gráfico con dependencias circulares
Gratis
http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen
Opción 8: GraphViz
Gratis
http://www.graphviz.org/Download..php
Esto no es C #, y utiliza código no administrado. Sin embargo, hay envoltorios de C # para ello.
Otorgado por AT&T, consulte "Investigadores de AT&T: Inventar la ciencia detrás del servicio" y "Página principal de investigación> cartera> herramientas de software": http://www.research.att.com/software_tools?fbid=NEk8_gxLLEc
Fuente
http://www.graphviz.org/Download_source.php
También abren Rserve de origen!
Opción 9: Shields.GraphViz
Gratis
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
Gratis
http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a
Esta biblioteca permite al usuario crear conexiones entre nodos, lo que probablemente sea un poco excesivo.
Ejemplo
Es todo MVVM.
Opción 11: Gephi - La plataforma Open Graph Viz
Gratis
No es una biblioteca de gráficos WPF, pero proporciona excelentes ejemplos de cómo pueden verse los gráficos realmente agradables. El tutorial es excelente.
Opción 12: Telerik
$$$
http://www.telerik.com/products/wpf/diagrams.aspx
Opción 13: Infragística
$$$
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
Gratis
No es tanto una herramienta gráfica, pero le muestra cómo mover, redimensionar y rotar objetos de cualquier tipo en un lienzo.
http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1
Opción 15: MVVM Diagram Designer
Gratis
Y, alguien volvió a implementar esto en MVVM: no es una herramienta de gráficos, pero le muestra cómo mover, redimensionar y rotar objetos de cualquier tipo en un lienzo.
http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer
Opción 16: yWorks - The Diagramming company
$$$
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
Gratis
Un control WPF para ver gráficos DOT.
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
$$$
Opción 22: Visualización dinámica de datos
dynamicdatadisplay.codeplex.com
Opción 23: Nevron
$$$
Solo para WinForms, pero se puede importar a WPF. Sin embargo, cada elemento individual no puede tener una plantilla, lo que es una gran ventaja de las soluciones WPF.
Términos de búsqueda de Google
- "workflow wpf graphing"
- "biblioteca de gráficos wpf"
- "biblioteca de máquina de estado wpf"
Aquí hay algunas opciones:
- VisiFire
- Controles de gráficos de Silverlight que se ejecutan en WPF
- WPF Toolkit
- Telerik
Espero que encuentres lo que necesitas. Los que cuestan dinero también tienen un sendero gratis disponible. ¡Puedes obtener algunos resultados bastante buenos con telerik o visifire!
Creo que puede implementar fácilmente todos sus requisitos con la biblioteca GraphX para WPF. Se basa en Graph # y tiene documentos detallados. http://panthernet.ru/en/projects-en/graphx-en
Admite el etiquetado de bordes y los bordes de bucle automático junto con las plantillas de borde y vértice. Si tiene alguna pregunta, puede hacerla en la sección de Discusiones del sitio.
En una pregunta similar sobre gráficos bipartitos que puede leer aquí , recibí la recomendación sobre http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a
Tiene bucles, etiquetado de vértices, una visualización personalizada de vértices que puede editar fácilmente para formar círculos. Sin embargo, creo que no tiene etiquetado de bordes. Sólo dale una oportunidad.
Al menos es un muy buen comienzo si decides hacerlo por tu cuenta.
Probablemente desee consultar http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen
Si esto se encuentra en un escenario comercial, también debería echar un vistazo a los yFiles de yWorks .
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 estado más grande o incluso crea la máquina de estado 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 las etiquetas de modo 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 jugar de inmediato con las demostraciones en vivo de Silverlight en línea o simplemente evaluar la biblioteca y jugar con las fuentes de muestra.
Descargo de responsabilidad: trabajo para yWorks, pero en SO no represento a mi empleador.
Graphviz + GraphViz C # Wrapper es exactamente lo que estaba buscando.