有没有一个围绕.NET的图形库?

97

我正在寻找适用于.NET的图形库,是否有相关的库可供使用?

注:我的意思是“图形库”,而不是“图形”或“图表库”!

编辑:我的意思是图形,来自图论: alt text
(来源:sourceforge.net

同时,我需要它具备绘图功能。


也许这个会有用:https://github.com/komorra/NodeEditorWinforms - komorra
图片链接似乎已经失效了(现在重定向到其他地方)。 - StayOnTarget
13个回答

46

使用QuickGraph (GitHub, CodePlex)和Graph# for WPF (GitHub分支, CodePlex)的组合 - 这两个顶级库对我来说非常有效,但是 Graph# 的文档几乎不存在。


17

我在NDepend团队工作,我们在2008年9月从GraphViz切换到MsAgl(Microsoft自动图形布局。 MsAgl许可证允许商业利用。以下是集成在NDepend中的MsAgl图形示例(一切都是交互式的,节点可移动/可选择/可移除/可点击,边缘可编辑/可选择/可移除/可点击,布局可缩放,而且,虽然它可能不够干净,但MsAgl API足以使用):

输入图片描述 输入图片描述 输入图片描述


可以在 http://rise4fun.com/Agl 上玩 AGL,并在 http://rise4fun.com/rest/samples/rss/Agl 上查看其他人的图表。 - George Birbilis
3
请注意,MSAGL现已在GitHub上以MIT许可证的形式成为开源项目:https://github.com/Microsoft/automatic-graph-layout,并且似乎被维护,因为最近有一些针对Silverlight版本的修复已经推出。 - George Birbilis
关于在我提到的Rise4Fun网站上尝试AGL,也许这是一个进行头脑风暴的简单选项,但你只能以文本形式输入图表,并且你用于节点的标签在该文本语法中用作ID,因此我猜想你不能在图表中的两个位置都有相同标签(比如说House)的节点。似乎你也可以使用图表边缘的标签(用于链接),使用http://rise4fun.com/Agl/fsm中显示的语法。 (在那里按PLAY按钮,然后向下滚动以查看生成的图表)。 - George Birbilis
我在哪里可以下载一个稳定的二进制版本?我不想构建每个未知质量的源代码。 - Thomas Weller
我猜在这里 https://github.com/Microsoft/automatic-graph-layout,不确定是否包含二进制版本。 - Patrick from NDepend team

13

尽管我之前的帖子被删除了,但我会试着在这个问题上给出更复杂的答案。

当前最受欢迎的答案已经不太实际了,因为Graph#库已经过时了。

我建议检查GraphXQuickgraph的组合。GraphX作为渲染引擎,Quickgraph作为图形管理和数学运算组件。

GraphX库是为WPF 4.0和METRO编写的。它提供了许多Graph#不具备的功能:

  • 针对大型图表的改进渲染性能
  • 边缘路由和捆绑支持,以及许多其他边缘选项
  • 增强的缩放控件,支持概览窗口和多个顶点选择
  • 丰富的文档和示例

此外,GraphX支持Graph#中的所有原始布局算法。


GraphX链接已失效。 - xabush
不,我们的托管服务刚刚遇到了严重的病毒问题。论坛仍然在线。 - Alexander Smirnov

9

有一个叫做QuickGraph的工具,它能够很好地工作,并且拥有大部分基本算法。


不错,但似乎无法绘制图形。 - devoured elysium
2
是的。我有这样的印象,你在询问如何使用图形进行计算,而不是仅仅绘制它们。但是该程序可以输出多种格式,可以被多个绘图工具所使用。 - Doug McClean

5

1
看起来很棒,但是7000块买个库。。。对我来说太贵了。 - devoured elysium
惊人的是,那是其中较便宜的选项之一! - A S
1
这个API虽然只有7k,但我从未像使用yWorks .NET和WPF库那样感到过如此的乐趣。 - Matthew Ruston

5

听起来不错,但从他们的示例中我所看到的,似乎你基本上必须自己绘制所有内容,这可能会成为一个问题,因为我有数千个节点需要绘制。 - devoured elysium
我不太确定你所说的“自己画出所有东西”的意思,NodeXL既是Excel的扩展程序,也是.Net的API,它支持图形布局算法,如力导向布局(Fruchterman-Reingold或Harel-Koren快速多尺度)或几何布局(圆形、网格、螺旋等)。我自己也用过它,没有太多“手动”工作。 - DrDee
我刚才说的是另一件事,我被不同的回复弄糊涂了。但是似乎NodeXL需要Office 2007。我甚至没有安装Office。 - devoured elysium
我已经安装了这个。现在我该如何从C#中使用它? - devoured elysium
请确保安装API库而不是Office Excel扩展程序。API可在以下网址获取:http://www.codeplex.com/NodeXL/Release/ProjectReleases.aspx?ReleaseId=33672NodeXL的命名空间为Microsoft.NodeXL,您可以使用以下代码导入它: import Microsoft.NodeXL.Core import Microsoft.NodeXL.Visualization (我认为这两个是最重要的库)。只需确保您的IDE路径包含NodeXL文件夹即可。 - DrDee
我刚试了一下,你不需要Office。 - Andy

4

看看Satsuma。它是用C#编写的,主要是图形算法,但也包括一些基本的图形布局和绘制。


3

我还没有尝试过,但是发现微软研究院提供了一个有趣的工具来可视化有向图 Microsoft Automatic Graph Layout

尝试使用“有向图”或“digraph”进行搜索。我得到了很多结果。


2
请查看http://quickgraph.codeplex.com/,它们支持通过DotViz和Glee进行可视化。
对于可视化,我还会查看http://flare.prefuse.org/。虽然它是Flash,但似乎非常有趣,他们至少有树形可视化,尽管您可能能够从中提取一些非定向图。

0

这不仅包含一些构建在集合数据结构上的图算法示例吗?我猜这个问题要求类似于C++ BGL库的内容(http://www.boost.org/doc/libs/1_40_0/libs/graph/doc/index.html)。 - Pontus Gagge
你说得对,Pontus。用户指南示例中确实有一个Graph类,但它并不是库的一部分。它只是在库的基础上构建的一个示例。从源代码来看,这个示例还很混乱,而且不完整。 - Paul Sasik
但它可以被使用,嗯,就像一种方法...... - jjchiw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接