2008-08-14 117 views
15

我正在尝试使用Ruby为一种语言编写流程图生成器。Ruby的绘图库

我想知道是否有任何库可用于为各种流程图元素绘制各种形状并将文本写出到这些形状。

我真的不想写绘制基本形状的代码,如果我可以帮助它。

有人可以指点我的一些参考文档与使用该库的例子吗?

+0

我有同样的问题,让我知道ID有什么比得上System.Drawing命名空间中的.NET – Zasz 2011-08-28 11:11:09

回答

2

线条简单的答案是,(在写作时),你想要什么几乎肯定是不存在的。抱歉!

如果你是基于Windows的话,那么我会在.NET空间中寻找一个产品,我期望你能找到一些东西。尽管如此,你可能还是要付钱。我想,如果你很勇敢,你可以使用IronRuby与之交谈。

从非MS环境我会希望基于Java的解决方案。如前所述,在网络世界中,您将希望基于JavaScript或可能更多可能来自Flash(甚至Silverlight?)世界的东西。实际上,如果你想留在Ruby中并且不介意一些风险,Silverlight可能是一种可行的方式 - 假设DLR的东西真的有效(这里没有经验)。 Ruby--就像我喜欢的那样 - 几乎没有围绕它的最成熟的GUI结构。

更新:由于写这篇文章(接近5年前)情况有所改善 - 一点点。尽管我还没有意识到任何特定的Ruby图形库,但对Graphvizhere (Github)或gem install ruby-graphviz有改进的支持。我发现对于简单图形,可以直接从Ruby编写脚本。

+2

一些图书馆做红宝石存在。尽管你只能使用基本元素。正如Nathan指出的,有https://rubygems.org/gems/rmagick,但也有https://rubygems.org/gems/cairo。这里有一个简单的教程http://www.hokstad.com/simple-drawing-in-ruby-with-cairo.html。这是另一个使用GTK http://zetcode.com/tutorials/rubygtktutorial/cairo/。我不得不同意这不是最好的API,但它是一个开始。 – Gaston 2012-02-01 18:14:51

3

这听起来像你将主要受限于你正在构建的任何用户代理的能力;如果这是一个Web项目,绘图功能将取决于浏览器。由于Ruby运行在服务器端,因此您至少需要一些JavaScript来允许拖放/缩放等。有很多JavaScript矢量绘图的例子(只是谷歌的“JavaScript图形库”),但都需要编码,并且我还没有见过任何一个能够优雅地抽象出来的图书馆。

ImageMagick有一个称为RMagick的Ruby绑定(有时根据存储库有其他名称)。 (Link) 我自己并没有使用它,但我相信它会做你想要的。你需要做一些编码,但它沿

draw.rectangle(x1, y1, x2, y2) 
draw.polygon(x1, y1,...,xN, yN) 
0

我完全相信,但查看cairo绑定的红宝石。文本的Pango。我正在调查当前并遇到此页面。

17

Graphviz中写下您的流程图为定向图或无向图。 Graphviz有一种语言dot,可以很容易地生成图表。只需生成点文件,通过Graphiviz运行,即可获得图像。

graph { 
    A -- B -- C; 
    B -- D; 
    C -- D [constraint=false]; 
} 

呈现为
undirected

digraph { 
    A [label="start"]; 
    B [label="eat"]; 
    C [label="drink"]; 
    D [label="be merry"]; 

    A -> B -> C; 
    C -> D [constraint=false]; 
    B -> D [ arrowhead=none, arrowtail=normal]; // reverse this edge 
} 

呈现为
directed

您可以控制节点形状和Graphviz的更多。