Простая графическая библиотека C ++ - PullRequest
6 голосов
/ 17 декабря 2009

Любые предложения для простой библиотеки C ++, которую я могу использовать для создания изображения с заданным размером, с фиксированным значением цвета rgb или идеально поддерживающими градиенты.

Требуется для работы в Windows и в идеале, но не обязательно для работы в OS X.

Я нашел Каир, но просто удивлялся, было ли что-то еще, так как мне кажется, что мне просто достаточно.

Ответы [ 8 ]

6 голосов
/ 17 декабря 2009

Каир является исключительной библиотекой для этой задачи. Если вы думаете, что это излишне, я могу заверить вас, что это определенно не раздутая или большая библиотека. Каир предназначен именно для того, что вам нужно. Обратите внимание, что если вам нужна возможность устанавливать текст на изображении, вам понадобится библиотека для набора текста, такая как Pango (которая хорошо с ней работает).

Тем не менее, большинство других библиотек в этой категории предназначены для игр (например, Allegro) или ограничены растровыми манипуляциями (такими как libGd и ImageMagick). Каир был разработан для созданных приложением векторных изображений.

3 голосов
/ 18 декабря 2009

Библиотека CImg проста в использовании, позволяет писать краткий код и определяется в одном заголовочном файле. Приведены несколько примеров.

3 голосов
/ 17 декабря 2009

Qt делает изображения, включая градиенты и т.д., является переносимым, использует C ++ и имеет довольно приличную документацию с gazillion примеров . Это, однако, не самая маленькая библиотека, но я был вполне ей доволен.

1 голос
/ 19 декабря 2009

Антизерновая геометрия больше образцов.

1 голос
/ 17 декабря 2009

Я обычно использую библиотеку gd , ту же библиотеку, которая используется php (среди прочих), обычно для создания CAPTCHA. Но вы можете делать с ней все, что захотите.

1 голос
/ 17 декабря 2009

Вы пробовали:

Corona

http://corona.sourceforge.net/

Если вам не нужно сглаживать, просто заполните буфер кадров RGB и передайте его в Corona для вывода. Если вам нужно размывание или преобразование битовой глубины, вам не повезло.

Вам следует проверить его безопасность, а также уровень исправлений включенных в него библиотек C, так как кажется, что Corona последний раз обновлялась много лет назад, но в основном это довольно тонкий слой C ++ поверх библиотек C для GIF, JPEG и PNG. с собственной поддержкой BMP и PCX.

1 голос
/ 17 декабря 2009

Juce может делать то, что вы хотите. Он может рисовать изображения и заполнять области градиентами и поддерживает Windows, Linux и Mac. Без более конкретной информации ничего не поделаешь.

0 голосов
/ 21 июня 2011

У меня было такое же требование, как и у вас: Я хочу нарисовать некоторые базовые 2D-фигуры и хочу, чтобы прозрачный элемент некоторые фигуры перекрываются.

После того, как я прочитал документ Каира, я обнаружил, что есть довольно много концепций, которые нужно запомнить. Поэтому я сделал свой собственный поиск и нашел PNGwriter . Хотя немного устарело, что мне нужно немного изменить исходный код, чтобы он компилировался с libpng1.4, синтаксис очень интуитивно понятен и это именно то, что мне нужно. Например, вы рисуете заполненный прямоугольник с pngwritter::filledcircle.

Посмотрите на пример построения математической функции:

http://pngwriter.sourceforge.net/quickstart-en.php

#include <pngwriter.h>


int main()
{
   int i;
   int y;

   pngwriter png(300,300,0,"test.png");

   for(i = 1; i < 300;i++)
     {
        y = 150+100*sin((double)i*9/300.0);

        png.plot(i,y, 0.0, 0.0, 1.0);
     }

   png.close();

   return 0;
}

Результат:

result

Mac OS X 10.6.7 поставляется с freetype и libpng, все что вам нужно сделать, чтобы обновить источник в соответствии с ошибкой компиляции, просто несколько быстрых хаков.

...