Как получить значение цвета QColor :: greenF точно между 0 и 1 вместо округления?

у меня есть QColor значение, и мне нужно разбить его на составляющие RGB между 0 и 1 только с одним значением после десятичной точки.
Например: Orange color является

QColor color = QColor(255,128,0)
qreal green = color.greenF();
qDebug() << green; //0.501960784

Принимая во внимание, что зеленый компонент должен быть 0.6, То есть это rgb value is (255,128,0) or (1,0.6,0).

Как получить 0.6 вместо 0.501960784?

-2

Решение

Но Оранжевый цвет 255,128,0

Нет такого понятия, как «оранжевый» цвет. Каждый называет что-то еще, используя одно и то же слово. Оранжевый не цвет, это диапазон оттенки. Эти оттенки становятся цветами, когда вы назначаете им некоторую насыщенность и яркость. Существует множество цветов, которые можно представить с помощью тройки по 8 бит на компонент R, G, B, которые имеют оранжевый оттенок, и, таким образом, их можно квалифицировать как оранжевый. Нет никаких оранжевый,

В то время как зеленый компонент должен быть 0,6. То есть его значение rgb равно (255,128,0) или (1,0,6,0).

Это не. QColor говорит вам об этом, и базовая математика говорит вам об этом. Цвет явно является 1/0.6/0, или же 1*255, 6/10*255, 0*255, или же 255, 1530/10, 0 или же 255, 153, 0 именно так. Никогда не будет 255,128,0 и я понятия не имею, кто тебе это сказал, но они ошиблись.

Так что все очень просто: забудьте обо всем. Просто используйте QColor::redF, greenF а также blueF, Они работают так, как должны.

О, и вы даже не упомянули слонов в комнате, которые являются цветовыми пространствами. Тройка RGB не имеет физического смысла — она ​​полностью абстрактна — пока вы не отобразите ее в физическое цветовое пространство. И вам лучше использовать откалиброванные устройства вывода, чтобы согласовать ваш выбор цвета с пользователем, иначе это будет бесконечная глупость вокруг.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]