Ruby的图形库

时间:2020-03-05 18:39:39  来源:igfitidea点击:

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

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

如果可以的话,我真的更喜欢不必编写用于绘制基本形状的代码。

有人可以指出我一些使用该库的参考文档吗?

解决方案

回答

听起来我们将主要受到要构建的任何用户代理的功能的限制;如果这是一个Web项目,则绘图功能将取决于浏览器。由于Ruby是在服务器端运行的,因此我们至少需要一些JavaScript才能进行拖动/缩放等操作。有很多JavaScript实例用于矢量绘图(仅适用于Google" javascript图形库"),但都需要编码,并且我还没有看过任何能优雅地抽象出这个风格的库。

ImageMagick具有一个称为RMagick的Ruby绑定(有时因存储库而有其他名称)。 (关联)
我自己没有使用过,但是我相信它会做我们想要的。我们将需要进行一些编码,但这与

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

回答

简单的答案是(在撰写本文时)几乎肯定不存在我们想要的东西。对不起!

如果我们是基于Windows的人,那么我会在.NET空间中寻找一种产品,我希望我们会在其中找到一些东西。不过,我们可能必须支付真金白银。我想,如果我们很勇敢,则可以使用IronRuby与之交谈。

从非MS环境中,我希望有一个基于Java的解决方案。如前所述,在Web世界中,我们将希望一些基于JavaScript的东西,或者更可能是Flash(甚至是Silverlight?)世界的东西。

实际上,如果我们想呆在Ruby中并且不介意冒险,Silverlight可能是假设DLR东西确实有效的一种方法(此处没有经验)。正如我所喜欢的,Ruby几乎没有最成熟的GUI结构。

更新:自编写此书(大约5年前)以来,情况已有所改善。虽然我仍然不知道任何特定的Ruby图形绘图库,但这里(Github)或者gem install ruby​​-graphviz对Graphviz的支持得到了改进。我发现对于简单的图形,很有可能直接从Ruby编写脚本。

回答

我完全确定,但请检查开罗装订中的红宝石。 Pango文本。我目前正在调查,并且偶然发现了此页面。

回答

在Graphviz中将流程图写为有向图或者无向图。 Graphviz有一种语言,点使得可以轻松生成图形。只需生成点文件,通过Graphiviz运行它,即可获得图像。

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

呈现为

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
}

呈现为

我们可以在Graphviz中控制节点形状以及更多其他功能。