Необходим совет: программный способ создания векторной графики с интенсивным использованием текста - PullRequest
1 голос
/ 20 июля 2010

Мне нужен способ для рендеринга древовидных структур, похожих на блок-схемы.

Удивительно, но я не могу найти (или я делаю неправильно) подходящий инструмент.

Сначала я посмотрел на SVG. Но я не мог найти способ нарисовать ограничивающую рамку вокруг текста без использования ECMAScript: я попытался сделать простую вещь, рисуя два текста, окруженных прямоугольниками и связанными линией, центрированных по сторонам (что-то вроде OO, где O - это прямоугольник с текстом). инструменты, которые можно использовать для рендеринга SVG (например, вы не можете преобразовать такой SVG-файл в png или pdf с помощью ImageMagick).

Во-вторых, я попробовал Asymptote , но это довольно тяжело, когда вы начинаете манипулировать текстом (вам нужна система LaTeX , установленная и настроенная).

Я ищу инструмент, в котором вы можете:

  1. Программный доступ к свойствам шрифта: базовая линия, подъем, спуск, высота
  2. Вычисление высоты / ширины строки (или ограничительной рамки)
  3. основные функции векторной графики, такие как рисование линий, фигур и т. Д.

Не думаю, что это сложно. Например, все такие функциональные возможности существуют, например, в Java2D. Конечно, я могу использовать его в качестве крайней меры и получить растровую графику, но может быть есть что-то удобное для использования?

Ответы [ 2 ]

1 голос
/ 20 июля 2010

Вы смотрели на GraphViz (http://www.graphviz.org/)? Это не совсем соответствует вашим требованиям, так как вы отказываетесь от некоторого контроля и вместо этого позволяете инструменту делать макет и рендеринг на основе декларативного описания графа или дерева, но я нашел, что это самый простой способ генерировать древовидный вывод.

0 голосов
/ 20 июля 2010

Не уверен, что он должен быть бесплатным?

Вот коммерческое решение с обширным API http://www -01.ibm.com / Программное обеспечение / интеграция / визуализация / Java /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...