Кросс-платформенная библиотека рисования
Я искал хорошую кросс-платформенную 2D-графическую библиотеку, которая может быть вызвана из С++ и может быть использована для создания довольно простой геометрии; линий, прямоугольников, кругов и текста (по горизонтали и по вертикали) для некоторых диаграмм и сохранить вывод в PNG.
Я думаю, что коммерческий пакет был бы предпочтительнее с открытым исходным кодом, потому что мы предпочли бы не беспокоиться о проблемах с лицензированием (если только что-то с лицензией стиля BSD без условия кредита). Я посмотрел на Cairo Graphics, который казался многообещающим, но текстовый рендеринг выглядит как дерьмо из коробки, а модернизация текстового интерфейса приводит нас к мутной лицензии.
Мне это нужно для Windows, Mac и Linux. Предпочтительно что-то довольно легкое и простое интегрировать. Я думал о Qt, но слишком тяжел для нашего приложения.
Любые идеи об этом были бы замечательными.
Ответы
Ответ 1
Попробуйте Антигранитная геометрия. Из описания:
Anti-Grain Geometry (AGG) представляет собой бесплатную графическую библиотеку с открытым исходным кодом, написанную на промышленном стандарте С++. Условия использования AGG описаны на странице "Лицензия". AGG не зависит от каких-либо графических API или технологий. В принципе, вы можете думать о AGG как о механизме рендеринга, который создает пиксельные изображения в памяти из некоторых векторных данных. Но, конечно, AGG может сделать гораздо больше. Идеи и философия AGG:
- Anti-Aliasing.
- Точность субпикселя.
- Максимально возможное качество.
- Высокая производительность.
- Независимость платформы и ее совместимость.
- Гибкость и расширяемость.
- Легкая конструкция.
- Надежность и стабильность (включая численную стабильность).
Ответ 2
Другой: Skia. Используется в Android и Chrome, при активной разработке, ускорение HW.
Ответ 3
Посмотрите SFML. Это с открытым исходным кодом, но лицензия очень разрешительная.
Рисование простых фигур
Отображение текста
Ответ 4
Antigrain делает высококачественный примитивный рендеринг и, похоже, способен отображать шрифты истинного типа и имеет коммерческую лицензию по запросу.
http://www.antigrain.com/
Ответ 5
Использовать SDL
Ответ 6
Вы пробовали FLTK? Он легкий, кросс-платформенный, имеет поддержку 2D/3D-графики и поставляется с хорошим набором виджета (включая компонент диаграмм). API простой и прямой.
Ответ 7
Существует также libgd - простой, но хорошо написанный.
Относительно Каирская графика, я не могу поверить в это renders текст, который выглядит плохо. Если вы особенно обеспокоены текстовым рендерингом, Состояние рендеринга текста с января 2010 года дает неплохой обзор.
Ответ 8
Я использую CImg: кросс-платформа (автономный одиночный заголовочный файл), простой, лаконичный.
PNG не поддерживается, но может быть обработан, если установлен ImageMagick (см. поддерживаемые форматы).
См. также этот связанный вопрос.
Ответ 9
Вы можете использовать Allegro 5 (поскольку упоминаются SDL и SFML). Это обеспечивает все необходимые вам платформы (и многое другое) и может отображать формы и сохранять в PNG. Версия 5 значительно улучшила API и аппаратное ускорение. С любой из этих низкоуровневых кросс-платформенных библиотек вам нужно будет найти свое собственное решение для построения диаграмм.
Я положил несколько заметок в мой блог об Allegro и использовал его на Mac.
Ответ 10
OpenGL?
Ответ 11
Я бы пошел на AGG или в Каир.