Кроссплатформенная библиотека чертежей
-
05-07-2019 - |
Вопрос
Я искал хорошую кроссплатформенную библиотеку 2D-рисования, которую можно вызывать из C++ и использовать для рисования довольно простой геометрии;линии, прямоугольники, круги и текст (горизонтальный и вертикальный) для некоторых диаграмм и сохраните выходные данные в формате PNG.
Я думаю, что коммерческий пакет будет предпочтительнее, чем пакет с открытым исходным кодом, потому что мы предпочитаем не беспокоиться о проблемах лицензирования (если только нет чего-то с лицензией в стиле BSD без оговорки о кредите).Я посмотрел на Cairo Graphics, которая показалась мне многообещающей, но рендеринг текста из коробки выглядит как дерьмо, а обновление текстовой серверной части приводит нас в темную лицензионную страну.
Мне это нужно для Windows, Mac и Linux.Предпочтительно что-то достаточно легкое и простое в интеграции.Я думал о Qt, но он слишком тяжел для нашего приложения.
Любые идеи по этому поводу были бы потрясающими.
Решение
Пытаться Антизернистая геометрия.Из описания:
Anti-Grain Geometry (AGG) — это бесплатная графическая библиотека с открытым исходным кодом, написанная на промышленном стандарте C++.Условия использования AGG описаны на странице «Лицензия».AGG не зависит от каких-либо графических API или технологий.По сути, вы можете думать о AGG как о механизме рендеринга, который создает пиксельные изображения в памяти из некоторых векторных данных.Но, конечно, AGG может сделать гораздо больше.Идеи и философия AGG:
- Сглаживание.
- Субпиксельная точность.
- Максимально возможное качество.
- Высокая производительность.
- Независимость от платформы и совместимость.
- Гибкость и расширяемость.
- Легкий дизайн.
- Надежность и стабильность (в том числе численная стабильность).
Другие советы
Еще один: Skia . Используется в Android и Chrome, в активной разработке, ускорение HW.
Ознакомьтесь с SFML . Это открытый исходный код, но лицензия очень разрешительная.
Antigrain выполняет высококачественный примитивный рендеринг и, по-видимому, способен отображать шрифты истинного типа и предоставляет коммерческую лицензию по запросу.
Вы пробовали FLTK ? Он легкий, кроссплатформенный, имеет поддержку 2D / 3D-графики и поставляется с хорошим набором виджетов (включая компонент построения диаграмм). API прост и понятен. Р>
Существует также libgd - простой, но хорошо написанный.
Что касается Каирской графики , я не могу поверить в это
Я использую CImg : кроссплатформенный (автономный файл с одним заголовком), простой, лаконичный. PNG изначально не поддерживается, но может быть обработан, если установлен ImageMagick (см. поддерживаемые форматы ) . р>
См. также этот связанный вопрос .
Вы можете использовать Allegro 5 (поскольку упоминаются SDL и SFML). Это обеспечивает все необходимые вам платформы (и даже больше) и может отображать фигуры и сохранять их в формате PNG. Версия 5 имеет значительно улучшенный API и аппаратное ускорение. С любой из этих низкоуровневых кроссплатформенных библиотек вам придется искать собственное решение для построения графиков. Р>
Я поместил некоторые заметки в своем блоге о Allegro и использовал его в Mac.
Я бы пошел на AGG или Каир.