Библиотека чертежей для Ruby

Я пытаюсь закодировать генератор потоковых диаграмм для языка, использующего Ruby.

Я хотел узнать, есть ли какие-нибудь библиотеки, которые я мог бы использовать для рисования различных фигур для различных элементов блок-схемы и записи текста для этих фигур.

Я бы действительно предпочел не писать код для рисования основных фигур, если смогу помочь.

Может кто-нибудь указать мне на справочную документацию с примерами использования этой библиотеки?

14.08.2008 14:51:28
У меня был тот же вопрос: дайте мне знать, что есть что-то сопоставимое с пространством имен System.Drawing в .net
Zasz 28.08.2011 11:11:09
4 ОТВЕТА
РЕШЕНИЕ

Простой ответ заключается в том, что (на момент написания) то, что вы хотите, почти наверняка не существовало. Сожалею!

Если вы работаете на базе Windows, я бы искал продукт в .NET-пространстве, где, я думаю, вы что-то найдете. Вы вероятно должны будете заплатить реальные деньги все же. Я полагаю, если вы смелы, вы можете поговорить с ним с помощью IronRuby.

Из среды без MS я бы надеялся на решение на основе Java. Как уже упоминалось, в мире Интернета вы будете надеяться на что-то, основанное на JavaScript, или, что более вероятно, что-то из мира Flash (или, может быть, даже Silverlight?).

На самом деле, если вы хотите остаться в Ruby и не возражаете против какого-то риска, Silverlight может быть подходящим вариантом - при условии, что DLR действительно работает (нет опыта здесь). Ruby - как бы мне это ни нравилось - едва ли имеет самую зрелую структуру GUI.

Обновление: С момента написания этой статьи (около 5 лет назад) ситуация немного улучшилась. Хотя я до сих пор не знаю каких-либо конкретных библиотек для рисования графов Ruby, улучшена поддержка Graphviz здесь (Github ) или by gem install ruby-graphviz. Я обнаружил, что для простых графиков вполне возможно написать сценарий непосредственно из Ruby.

2
4.12.2014 05:43:41
Некоторые библиотеки существуют для ruby. Хотя вам придется работать только с базовыми элементами. Как отметил Натан, есть rubygems.org/gems/rmagick , но есть также rubygems.org/gems/cairo . Вот простое руководство hokstad.com/simple-drawing-in-ruby-with-cairo.html . А вот еще один, который использует GTK zetcode.com/tutorials/rubygtktutorial/cairo . Я должен согласиться, что это не лучший API, но это только начало.
Gaston 1.02.2012 18:14:51
«Мне нужно что-то с Ruby», «Попробуйте .NET», WTF.
Dorian 17.02.2013 19:11:11
@ Гастон, очень жаль, что ты не сделал ответ из этого.
Daniel 12.06.2017 19:13:01

Похоже, вы будете ограничены в основном возможностями любого пользовательского агента, для которого вы создаете; Если это веб-проект, возможности рисования будут зависеть от браузера. Поскольку Ruby работает на стороне сервера, вам, как минимум, понадобится немного JavaScript, чтобы разрешить перетаскивание / масштабирование и т. Д. Существует множество примеров использования JavaScript для векторного рисования (просто google "javascript graphics library"), но все они требуют кодирования и Я не видел ни одной библиотеки, которая так элегантно абстрагируется.

ImageMagick имеет привязку Ruby под названием RMagick (иногда известную под другими именами, в зависимости от хранилища). ( Ссылка ) Я не использовал это сам, но я верю, что это будет делать то, что вы ищете. Вам нужно будет немного кодировать, но это в духе

draw.rectangle(x1, y1, x2, y2)
draw.polygon(x1, y1,...,xN, yN)
3
16.06.2017 16:12:07

Я полностью уверен, но проверьте каирские привязки для рубина. Панго для текста. Я сейчас расследую и наткнулся на эту страницу.

0
23.12.2008 07:31:17

Запишите свою блок-схему как ориентированный или неориентированный граф в 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.

17
8.02.2017 14:09:31