【问题标题】:Drawing Library for RubyRuby 绘图库
【发布时间】:2008-08-14 14:51:28
【问题描述】:

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

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

如果我能帮上忙,我真的希望不必编写用于绘制基本形状的代码。

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

【问题讨论】:

  • 我有同样的问题,让我知道 .net 中有任何与 System.Drawing 命名空间相媲美的东西

标签: ruby graphics drawing


【解决方案1】:

Graphviz 中将您的流程图写成有向图或无向图。 Graphviz 有一种语言,dot,可以很容易地生成图形。只需生成点文件,通过 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 中控制节点形状等等。

【讨论】:

    【解决方案2】:

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

    ImageMagick 有一个名为 RMagick 的 Ruby 绑定(有时也有其他名称,具体取决于存储库)。 (Link) 我自己没有使用过它,但我相信它会满足您的需求。您将需要进行一些编码,但它遵循

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      更新:自从写这篇文章(大约 5 年前)以来,情况有所改善 - 一点点。虽然我仍然不知道任何特定的 Ruby 图形绘制库,但对 Graphvizhere (Github) 或 gem install ruby-graphviz 的支持得到了改进。我发现对于简单的图表,直接从 Ruby 编写脚本是完全可能的。

      【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-29
        • 1970-01-01
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多