2010-11-14 3 views
7

Мой друг работает над 2D-игрой, где графика будет .svg-файлами, и мы будем масштабировать их соответственно либо путем их растеризации, либо рендеринга их непосредственно на поверхности (который в какой-то момент требует растеризации).Оформить векторную графику (.svg) в C++

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

Итак, какие библиотеки C++ я могу использовать для получения файла .SVG и «сглаживания» его, чтобы я мог его отобразить? Очевидно, что библиотеке необходимо поддерживать масштабирование, чтобы я мог масштабировать векторную графику, а затем растрировать ее.

Я использую Windows, и Visual C++ Express, 2010.

Любые предложения, было бы полезно, поскольку я очень потерял прямо сейчас:

Я попытался Каир, но он позволяет только написание .SVG файлов и не позволяет вам читать файл .svg. Я также посмотрел на librsvg, который работает с Cario, но у меня было много проблем с тем, чтобы он работал нормально в Windows (потому что у него много загрузок GNOME). Если у вас есть инструкции, чтобы заставить их работать (в Windows), это тоже было бы здорово.

ответ

7

wxsvg library позволяет загружать и обрабатывать файлы SVG. Qt также имеет SVG module.

+0

wxSVG выглядит идеально, потому что у меня есть опыт работы с wxWidgets. Хотя я не имею абсолютно никакого представления о том, как скомпилировать Windows, в конце концов я это выясню. Спасибо :) – Brad

3

SVG++ library обеспечивает расширенную поддержку для чтения SVG, так что визуализация SVG с аллегро может быть реализована в разумные сроки.

1

Недавно я собрал небольшую библиотеку SVG рендерера в C++: https://github.com/igagis/svgren

Он использует Каир для рендеринга кремового экрана поверхности. Поддерживает градиенты и все виды фигур.

+0

Вы использовали эту библиотеку для рендеринга текста? У меня проблемы с текстом. –

+0

@SubhamoySengupta, пожалуйста, отправьте вопрос на адрес https://github.com/igagis/svgren/issues, если у вас возникли проблемы с библиотекой. – igagis

+0

Я бы поставил проблему, если обнаружил ошибку. Поскольку похоже, что текст не поддерживается вообще, я не уверен, что это будет проблемой. Отсюда вопрос. –

1

Я немного опаздываю до разговора, но я предлагаю вам взглянуть на Nano SVG, очень легкий инструмент рендеринга svg, который не нуждается в cairo/libsvg. Я получил nanosvg, собранный и работающий через пару часов. Это очень просто, но он выполняет свою работу.