Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Обновлять:С тех пор, как я написал это (около 5 лет назад), ситуация улучшилась - немного.Хотя мне до сих пор неизвестны какие-либо конкретные библиотеки рисования графиков Ruby, существует улучшенная поддержка Графвиз здесь (Гитхаб) или по 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.

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

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

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

Я абсолютно уверен, но проверьте крепления Cairo для Ruby.Панго для текста.В настоящее время я занимаюсь расследованием и наткнулся на эту страницу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top