Точность цвета hsl QColor

В представленном ниже коде hsl компонент оттенка цвета имеет значение, отличное от ожидаемого.

Для: r: 255 г: 168 б: 177 он дает hsl оттенок 353, но на других веб-инструментах он дает 354

QColor rgb(c);
QColor hsl = rgb.toHsl();
QColor hsv = rgb.toHsv();

// RGB
int r = rgb.red();
int g = rgb.green();
int b = rgb.blue();

// HSB
int hslh = qMax(hsl.hslHue(), 0);
int hsls = hsl.hslSaturation();
int hsll = hsl.lightness();

Это известная проблема?

0

Решение

Кажется, проблема заключается просто в том, как Qt округляет значения компонентов цвета при запросе целочисленного вывода. Для иллюстрации на вашем примере:

QColor col(255,168,177);
std::cout << "hue_float " << col.hslHueF()*360.0f << std::endl;
std::cout << "hue_int " << col.hslHue() << std::endl;

Выходы:

hue_float 353.79
hue_int 353
0

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


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