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

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

如果可以的话,我真的希望不必编写绘制基本形状的代码。

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

有帮助吗?

解决方案

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

如果您使用 Windows,那么我会在 .NET 领域寻找产品,我希望您会在其中找到一些东西。不过,您可能需要支付真钱。我想,如果您足够勇敢,您也许可以使用 IronRuby 与它对话。

在非 MS 环境中,我希望有一个基于 Java 的解决方案。正如已经提到的,在 Web 世界中,您将希望得到一些基于 JavaScript 的东西,或者更可能是来自 Flash(甚至可能是 Silverlight?)世界的东西。

实际上,如果您想继续使用 Ruby 并且不介意一些风险,Silverlight 可能是一种选择 - 假设 DLR 的东西确实有效(这里没有经验)。Ruby——尽管我很喜欢它——几乎没有最成熟的 GUI 结构。

更新:自从写这篇文章以来(接近五年前),情况有所改善——一点点。虽然我仍然不知道任何特定的 Ruby 图形绘制库,但改进了对 图形可视化 这里(Github)或由 gem install ruby-graphviz. 。我发现对于简单的图表,很可能直接从 Ruby 编写脚本。

其他提示

将流程图写成有向图或无向图 图形可视化. 。Graphviz 有一种语言, 这使得生成图表变得容易。只需生成点文件,通过 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 中控制节点形状等。

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

ImageMagick 有一个名为 RMagick 的 Ruby 绑定(有时也有其他名称,具体取决于存储库)。(关联)我没有自己使用过,但是我相信它会做您想要的。你需要做一些编码,但它是沿着

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

我完全确定,但是请查看 cairo 的 ruby​​ 绑定。Pango 用于文本。我目前正在调查并发现了此页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top