2013-07-02 3 views
1

Я используюКак конвертировать RGB в UINT index_or_rgb

QImage::setPixel(x, y, uint index_or_rgb); // http://qt-project.org/doc/qt-4.8/qimage.html#setPixel-2 

Но я не знаю, как преобразовать значения RGB в UINT. Как преобразовать значения rgb в uint?

QColor *c = new QColor(185, 20, 120); 
image.setPixel(i, i2, c->value()); // this doesnt work 

ответ

3

1. Смотрите документацию QImage::setPixel:

Если формат изображение, является либо монохромным или 8-бит, данным значением index_or_rgb должно быть индекс в таблице цветов на изображении, в противном случае параметр должен быть значением QRgb.

Я предполагаю, что ваш образом не является ни монохромным, ни 8-бит, так что вам нужно, чтобы получить QRgb значение (которое является ЬурейиМ из unsigned int).

2. Далее, если вы посмотрите на QColor документации, вы можете заметить, что QRgb значение из QColor должны быть получены с использованием rgb() (или rgba(), если использовать альфа-канал в изображении).

3. Обратите внимание, что QColor не следует создавать с помощью new. Он обычно создается в стеке и передается по значению. Так что ваш код должен быть исправлен в следующем виде:

QColor c(185, 20, 120); 
image.setPixel(i, i2, c.rgba()); 

отметить также, что value() не возвращает представление всей QColor. Он просто возвращает один из трех компонентов представления HSV QColor. Кажется, что value() полностью не связан с вашим прецедентом.

1

Этот способ, возможно, работает, просто попробуйте.

setPixel(x, y, qRgb(185, 20, 120)); 
Смежные вопросы