Como desenhar facilmente gráficos em WPF? [fechado]
Preciso de desenhar gráficos que representem máquinas de estados finitos. Tentei usar o gráfico # . É fixe, mas falta-lhe algumas coisas. Não há documentação, o que torna muito difícil de usar, Eu não posso desenhar loops (arestas de um vértice para si) usando seu controle WPF personalizado e arestas de rotulagem também não é implementado. Existe alguma outra biblioteca ou forma aconselhada de desenhar gráficos em WPF?
funcionalidade Eu preciso:
- rotulagem edge
- ciclo (Cíclico) arestas
- etiquetagem de vértices
- desenhar círculos simples / duplos em torno de vértices-vértices deve ser representado como círculo (ou círculo duplo) com um rótulo dentro
EDIT: tenho algumas propostas, pelas quais estou grato. No entanto, penso que não deixei bem claro o meu pensamento. Preciso deste tipo de gráfico: http://static.max99x.com/school/automata-editor1.png todas as ferramentas sugeridas até agora não são adequadas para isto ou talvez não saiba como aplica-os nesta situação.
6 answers
Opção 1: Disposição Automática De Grafos Da Microsoft
Livre
Http://research.microsoft.com/en-us/projects/msagl/
GitHub
Https://github.com/Microsoft/automatic-graph-layout.git
Winforms > > WPF
É WinForms, mas pode ser importado para o WPF com algumas linhas de código.Visualizando nós e arestas com o gráfico automático Microsoft Disposição
Exemplos
Http://research.microsoft.com/en-us/projects/msagl/#Layouts
FAQ
Http://research.microsoft.com/en-us/projects/msagl/faq.aspx
Opção 2: QuickGraph - uma biblioteca de 100% C# grafo com Graphviz Suporte
Livre
Http://quickgraph.codeplex.com/
Esta Biblioteca é 100% C#. Não seja enganado pela linha "Suporte de Graphviz", isto significa que ele usa o código C# para importar a saída de Graphviz. Sem código C++ à vista.Http://www.codeproject.com/Articles/5603/QuickGraph-A-C-graph-library-with-Graphviz-Sup
Tem um pacote NuGet.
Em desenvolvimento de 2003 a 2011 (8 anos!!).
Opção 3: GraphSharp
Livre
Http://graphsharp.codeplex.com/
- depende do Gráfico Rápido(que é 100% C#). Suporte async / wait (nice!).
Demo
Https://sachabarbs.wordpress.com/2010/08/31/pretty-cool-graphs-in-wpf/
Notas
Este funcionou muito bem, estava a funcionar dentro de algumas horas. Ele também suporta {[[0]}, para que cada nó possa ter qualquer aparência e sentir que você querer.Opção 4: Graphviz4net
Livre
Http://graphviz4net.codeplex.com/
Opção 5: GoDiagram
$$$
Http://www.nwoods.com/products/godiagram/index.html
Opção 6: um controlo de desenho em árvore de grafos para WPF
Livre
Http://www.codeproject.com/Articles/29518/A-Graph-Tree-Drawing-Control-for-WPF
Não é adequado. É uma planta de árvore.
Opção 7: usar o WPF para visualizar um gráfico com dependências circulares
Livre
Http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen
Opção 8: GraphViz
Livre
Http://www.graphviz.org/Download..php
Isto não é C#, e usa código não gerido. No entanto, existem embalagens C# para ele.
[[4]] Opensourced by AT & T, see "AT&T Researchers-Inventing the Science Behind the Service", and " research home > portfolio > ferramenta": http://www.research.att.com/software_tools?fbid=NEk8_gxLLEcFonte
Http://www.graphviz.org/Download_source.php
Também abriram o Rserve! Opção 9: Escudos.GraphVizLivre
Invólucro para GraphViz.
Https://github.com/timothy-shields/graphviz
Opção 10: NetworkView: um controlo personalizado WPF para visualizar e editar redes, gráficos e fluxogramas
Livre
Http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a
Esta biblioteca permite ao Utilizador criar ligações entre nós, o que é provavelmente um pouco exagerado.
Exemplo
É tudo MVVM.Opção 11: Gephi - O Grafo Aberto Viz Plataforma
Livre
Não é uma biblioteca de gráficos WPF, mas fornece grandes exemplos de como os gráficos realmente bonitos podem parecer. O tutorial é excelente.
Opção 12: Telerik
$$$
Http://www.telerik.com/products/wpf/diagrams.aspx
Opção 13: Infragísticas
$$$
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
Opção 14: desenhador de diagramas WPF
Livre
Não tanto a ferramenta de graficação, mas mostra-lhe como mover, redimensionar e rodar objectos de qualquer tipo numa tela.
Http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1
Opção 15: Diagrama de MVVM Designer
Livre
E, alguém reimplementou isto em MVVM: não tanto a ferramenta de gráfico, mas mostra-lhe como mover, redimensionar e rodar objectos de qualquer tipo numa tela.
Http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer
Opção 16: yWorks-The Diagramming company
$$$
Https://www.yworks.com/en/products_yfiles_practicalinfo_gallery.html https://www.yworks.com/en/products_yfileswpf_about.html
Opção 17: MindFusion
$$$
Http://www.mindfusion.eu/features-wpfdiagram.html http://www.mindfusion.eu/
Opção 18: Dot2WPF
Livre
Um controlo WPF para ver gráficos de pontos.
Http://www.codeproject.com/Articles/18870/Dot-WPF-a-WPF-control-for-viewing-Dot-graphs
Opção 19: SyncFusion
$$$
Https://www.syncfusion.com/products/wpf/diagram
Opção 20: AddFlow
$$$
Https://www.componentsource.com/product/addflow-wpf-standard
Opção 21: Lassalle
$$$
Opção 22: Visualização De Dados Dinâmicos
Http://dynamicdatadisplay.codeplex.com/
Opção 23: Nevron
$$$
Apenas para WinForms, mas pode ser importado para WPF. No entanto, cada item individual não pode ser templated, o que é uma grande vantagem das soluções WPF.
Termos De Pesquisa Do Google
- "workflow wpf graphing"
- "WPF graphing library"
- "WPF state machine library"
Graphviz + Graphviz C# Wrapper são exactamente o que eu procurava.
Eu acho que você pode facilmente implementar todos os seus requisitos com a Biblioteca GraphX para WPF. É baseado no gráfico# e tem documentos detalhados. http://panthernet.ru/en/projects-en/graphx-en
Ele suporta o labelecimento de aresta e as arestas self-looped juntamente com os templates de aresta e vértices. Se você tiver alguma dúvida que você pode fazer na seção de discussões no site.
Em uma questão semelhante sobre grafos bipartidos que você pode ler aqui Recebi a recomendação sobre a [[4]] NetworkView
Ele tem laços, etiquetagem de vértices, uma visualização de vértices personalizada que você pode facilmente editar para ser círculos. No entanto, penso que não tem uma rotulagem de ponta. Experimenta.
Pelo menos é um bom começo se você decidir fazê-lo por conta própria.
Você provavelmente quer dar uma olhada em o artigo do Codeproject " Visualize um gráfico com dependências circulares"
Se isto está num cenário comercial, Você também deve dar uma olhada em yworks' yFiles.
Tem todas as características que procura e a sua característica mais notável é a capacidade de organizar automaticamente os seus diagramas. Se você tem uma máquina de Estado Maior ou até mesmo criar a máquina de estado em código, isso irá ajudá-lo claramente a organizar até mesmo grandes diagramas automaticamente. Também para os rótulos existem algoritmos automáticos de colocação de etiquetas, que encontram colocações para a etiquetas para que não se sobreponham entre si ou com outros elementos não relacionados.
Você pode ver a biblioteca ao vivo em ação neste vídeo do Youtube , mas você também pode jogar imediatamente com as demos ao vivo do Silverlight online ou apenas avaliar a biblioteca e jogar com as fontes de exemplo.
Disclaimer: eu trabalho para yWorks, mas por isso eu não represento o meu empregador.
Aqui estão algumas opções:
- VisiFire
- Os controlos do mapa de Silverlight estão a correr no WPF
- Conjunto de ferramentas WPF
- Telerik