2008-08-14 21 views
15

Rubyを使用して言語用のフローチャートジェネレータを作成しようとしています。Ruby用図面ライブラリ

さまざまなフローチャート要素にさまざまな図形を描き、それらの図形にテキストを書き出すために使用できるライブラリがあるかどうかを知りたかったのです。

基本的な図形を描画するためのコードを書く必要がない方がいいと思います。

誰かが、そのライブラリを使用した例を参照文書に指摘できますか?

+0

私は同じ質問をしていました。私はidにSystem.Drawingネームスペースと同等のものがあることを教えてください。 – Zasz

答えて

2

の線に沿っています。ごめんなさい!

Windowsベースのユーザーは、.NETのスペースで製品を探すことができます。そこで、何か見つかると思っています。あなたはおそらく本当のお金を支払わなければならないでしょう。あなたが勇気があれば、IronRubyを使って話すことができるかもしれません。

非MS環境から、私はJavaベースのソリューションを期待しています。すでに言及したように、Webの世界では、JavaScriptベースのもの、あるいはFlash(おそらくSilverlight)の世界からのものを期待しています。

実際には、Rubyにとどまり、何らかのリスクに気付かないようにするには、Silverlightを使用する方法があります。 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

+4

"Rubyで必要なもの"、 ".NETを試してください"、WTF。 – Dorian

+0

@Gastonあなたはそれから答えを出さなかった。 – Blogueira

3

あなたは、主にあなたが構築しているユーザーエージェントの機能によって制限されるように思えます。これがWebプロジェクトの場合、描画機能はブラウザに依存します。 Rubyはサーバーサイドで動作しているので、ドラッグ/ズームなどを可能にするJavaScriptが最低限必要です。ベクトル描画(JavaScriptのみのJavaScript)の例はたくさんありますが、すべてコーディングが必要です。私はこれをエレガントに抽象化するライブラリを見たことがない。

ImageMagickには、RMagickというRubyバインディングがあります(リポジトリによっては、他の名前で知られることもあります)。 (Link) 私はそれを自分で使ったことはありませんが、探していることをやると思います。あなたは、いくつかのコーディングを行う必要がありますが、それは簡単な答えはあなたがほぼ確実に欲しいものは存在しませんでした(執筆時点で)ということである

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

私は完全に確信していますが、ルイのためのカイロバインディングをチェックしてください。テキストの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の中にレンダリングします。