Визуализация векторной графики (.svg) в C ++ - PullRequest
9 голосов
/ 14 ноября 2010

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

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

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

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

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

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

Ответы [ 5 ]

8 голосов
/ 14 ноября 2010

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

3 голосов
/ 23 ноября 2016

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

2 голосов
/ 26 октября 2015

Я недавно собрал библиотеку визуализации SVG на C ++: https://github.com/igagis/svgren

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

2 голосов
/ 09 января 2015

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

0 голосов
/ 02 июля 2019

Лично я использую NanoSVG в моем Simple Viewer GL.Это позволяет мне легко загружать и растеризовывать SVG-изображения в несколько строк кода.Но эта библиотека имеет слабую поддержку SVG.

...