Цвет обычно задается в формате RGB (красный, зеленый и синий), но также может быть задан в форматах HSV (оттенок, насыщенность и значение) или CMYK (голубой, пурпурный, желтый и черный). Кроме того цвет может быть определен по его названию. Название цвета может быть любым из имен цветов SVG 1.0.

QColor также поддерживает задание прозрачности с помощью альфа-канала. Значение альфа-канала, равное 0, означает полностью прозрачный цвет, а значение равное 255 означает полностью непрозрачный цвет.

Значение альфа-канала цвета может быть получено и установлено с помощью методов alpha() и setAlpha(), если это значение типа integer, и с помощью методов alphaF() и setAlphaF(), если это значение типа double.

Конструктор QColor создает цвет в формате RGB. Чтобы создать QColor основанный на моделях HSV или CMYK значений, используйте методы toHsv() и toCmyk() соответственно. Эти функции возвращают копию цвета, используя нужный формат. Кроме этих методов существуют статические fromRgb(), fromHsv() и fromCmyk(), создающие цвета из указанных значений. В качестве альтернативы, цвет может быть преобразован в любой из трех форматов с использованием метода convertTo() (возвращающего копию цвета в нужном формате) или любого метода из setRgb(), setHsv() и setCmyk() изменяющих формат цвета. При помощи метода spec() можно узнать в какой моделе был создан цвет.

Цвет можно задать функцией setNamedColor(), передав ей строку в формате RGB (например, "#112233") или в формате ARGB (например,"#ff112233"), а так же передав его название (например, "blue"). Названия цветов взяты из названий цветов SVG 1.0. Метод name() возвращает название цвета в формате "#RRGGBB". Цвета также могут быть установлены с помощью методов setRgb(), setHsv() и setCmyk(). Чтобы получить светлые или темные оттенки цветов, можно воспользоваться методами lighter() и darker() соответственно.

Метод isValid() указывает, является ли установленное значение QColor корректным. Например, цвет RGB со значением RGB, выходящим из диапазона, является некорректным. По разумным соображениям QColor игнорирует некорректные значения, поэтому результат их использования не определен.

QColor позволяет получить отдельные состовляющие цвета с помощью специальных методов, например: red(), hue(), cyan() и д.р.

Класс QColor платформерменно- и аппаратно-независимый.

Целые числа и числа с плавающей запятой

QColor поддерживает числа с плавающей запятой и предоставляет специальные методы для работы с ними, например hueF(), fromCmykF() и д.р. Следует отметить, что так как составляющие цвета хранятся с использованием 16-битных чисел, могут наблюдаться незначительные отклонения между значением, установленным с использованием, например, setRgbF() и значением, возвращаемым методом getRgbF() из-за округления.

В то время как целое число на основе функции принимают значения в диапазоне 0-255 (за исключением оттенка (), который должен иметь значения в диапазоне 0-359), функции с плавающей точкой принимать значения в диапазоне 0,0 - 1,0.

Рисование с использованием альфа-смешивания

QColor также поддерживают альфа-смешение цветов. Альфа-канал цвета определяет степень прозрачности, 0 означает полностью прозрачный цвет, а 255 означает полностью непрозрачный цвет. Например:

// Задание полупрозрачного красного цвета
$painter->setBrush(new QColor(255, 0, 0, 127));
$painter->drawRect(0, 0, 100, 200);

// Задание полупрозрачного синего цвета
$painter->setBrush(new QColor(0, 0, 255, 127));
$painter->drawRect(0, 0, 200, 100);

Этот код создаст такое изображение:

alphafill 

Получить и установить значение альфа-прозрачности цвета можно с помощью методов alpha() и setAlpha() соответственно, если это значение типа integer, и с помощью методов alphaF() и setAlphaF(), если это значение типа double.

Предопределенные цвета

Есть 20 предопределенных цветов QColor, доступных в Qt. В их числе чёрный, белый, первичные и вторичные цвета, более тёмные версии этих цветов и три оттенка серого. QColor также поддерживает разнообразие названий цветов; статический метод возвращает список поддерживаемых имён цветов.

Цвета Qt

comments powered by HyperComments