想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
5年前关闭。
Improve this question
我需要绘制表示有限状态机的图形。我尝试使用Graph#。很酷,但是缺少一些东西。没有文档,这使得使用起来非常困难,我无法使用其自定义WPF控件绘制循环(从顶点到自身的边),并且也未实现标签边。在WPF中还有其他建议使用的图形绘制库吗?
我需要的功能:
有任何想法吗?
编辑:
我提出了一些建议,对此我深表感谢。但是,我想我还没有说清楚。我需要这种图:
到目前为止,建议使用的所有工具都不适合于此,或者我不知道如何在这种情况下应用它们。
最佳答案
选项1:Microsoft自动图形布局
自由
http://research.microsoft.com/en-us/projects/msagl/
的GitHub
https://github.com/Microsoft/automatic-graph-layout.git
Winforms >> WPF
它是WinForms,但可以通过几行代码将其导入WPF。
使用Microsoft自动图形布局可视化节点和边
http://www.codeguru.com/csharp/.net/net_wpf/article.php/c16963/Visualizing-Nodes-and-Edges-with-Microsoft-Automatic-Graph-Layout.htm
例子
http://research.microsoft.com/en-us/projects/msagl/#Layouts
常问问题
http://research.microsoft.com/en-us/projects/msagl/faq.aspx
选项2:QuickGraph-具有Graphviz支持的100%C#图形库
自由
http://quickgraph.codeplex.com/
该库是100%C#。不要被“Graphviz Support”这一行所误导,这意味着它使用C#代码从Graphviz导入输出。看不到C++代码。
http://www.codeproject.com/Articles/5603/QuickGraph-A-C-graph-library-with-Graphviz-Sup
有一个NuGet包。
从2003年开发到2011年(8年!)。
选项3:GraphSharp
自由
http://graphsharp.codeplex.com/
演示版
https://sachabarbs.wordpress.com/2010/08/31/pretty-cool-graphs-in-wpf/
笔记
这个程序运行得非常好,在几个小时内就可以启动并运行了。它还支持
DataTemplates
,因此每个节点都可以具有所需的任何外观。选项4:Graphviz4net
自由
http://graphviz4net.codeplex.com/
选项5:GoDiagram
$$$
http://www.nwoods.com/products/godiagram/index.html
选项6:WPF的图树绘图控件
自由
http://www.codeproject.com/Articles/29518/A-Graph-Tree-Drawing-Control-for-WPF
不适合。这是树状布局。
选项7:使用WPF可视化具有循环依赖关系的图
自由
http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen
选项8:GraphViz
自由
http://www.graphviz.org/Download..php
这不是C#,并且使用非托管代码。但是,有C#包装器。
由AT&T开源,请参阅“AT&T研究人员-在服务背后发明科学”和“研究首页>产品组合>软件工具”:
http://www.research.att.com/software_tools?fbid=NEk8_gxLLEc
来源
http://www.graphviz.org/Download_source.php
他们还开源Rserve!
选项9:Shields.GraphViz
自由
GraphViz的包装。
https://github.com/timothy-shields/graphviz
选项10:NetworkView:WPF自定义控件,用于可视化和编辑网络,图形和流程图
自由
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平台
自由
参见http://gephi.github.io/
不是WPF图形库,而是提供了很好的图形外观的绝佳示例。本教程非常棒。
选项12:Telerik
$$$
http://www.telerik.com/products/wpf/diagrams.aspx
选项13:基础设施
$$$
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
选项14:WPF图设计器
自由
并没有太多的绘图工具,但是它确实向您展示了如何在 Canvas 上移动,调整大小和旋转任何类型的对象。
http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1
选项15:MVVM图设计器
自由
而且,有人在MVVM中重新实现了这一点:并没有太多的制图工具,但是它确实向您展示了如何在 Canvas 上移动,调整大小和旋转任何类型的对象。
http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer
选项16:yWorks-绘图公司
$$$
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
自由
一个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
$$$
https://www.componentsource.com/product/addflow-wpf-standard
选项21:拉萨尔
$$$
http://www.lassalle.com/
选项22:动态数据显示
http://dynamicdatadisplay.codeplex.com/
选项23:Nevron
$$$
https://www.nevron.com/
仅用于WinForms,但可以导入到WPF。但是,每个项目都无法进行模板化,这是WPF解决方案的一大优势。
Google搜索条款