2008-08-14 77 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的更多。