2009-12-17 3 views
6

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

Необходимо работать с Windows и в идеале, но не обязательно работать с OS X.

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

ответ

1

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

+0

Juce не выглядит «простым». Это похоже на довольно большую библиотеку, которая делает много вещей, которые совершенно не связаны с потребностями Адама. – greyfade

6

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

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

+0

+1 на этом. Я использовал его в своем собственном PhD-коде, и было приятно работать. Однако я использовал версию libgtkmm (C++). –

1

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

Corona

http://corona.sourceforge.net/

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

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

3

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

+0

Это не простой и легкий. –

+1

Как установка, конечно. Но вы строите только те компоненты, которые вам нужны. Так что для графического приложения нет xml, networking, sql, ... который можно было бы использовать для других приложений. Он соответствует нескольким требованиям в исходном вопросе - и он просто попросил «простого», но не для легкого веса. –

1

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

3

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

+0

Да, CImg - это хорошо. Очень легко интегрировать. –

0

У меня было такое же требование, как и у вас: Я хочу нарисовать некоторые базовые 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, все, что вам нужно сделать, чтобы обновить источник в соответствии с ошибкой компиляции, просто som быстро взломать.

Смежные вопросы