Хорошо, у меня есть спокойное применение GUI, где я решил произвести цветовую палитру беспорядочно (разрешающий мне отличить данные, показанные на основе уникальных идентификаторов данных).
Алгоритм, который я использую, как таким образом:
void Palette::generatePalette(quint32 seed, bool dark) {
sfmt_t sfmt;
sfmt_init_gen_rand(&sfmt, seed);
quint32 i;
qreal hue;
QColor col;
qreal lightness = 0.75;
qreal saturation = 0.6;
if (dark) {
lightness = 0.5;
saturation = 0.8;
}
for (i = 0; i < numberOfColors; i++) {
hue = sfmt_genrand_res53(&sfmt);
hue += 0.618033988749895;
hue = fmod(hue, 1.0);
col = QColor::fromHslF(hue, saturation, lightness);
palette.append(col);
}
}
Это дает мне, по большей части, хорошие пастельные цвета, которые очень видимы на сером фоне. Однако иногда желтый прибывает, который не легко различим от фона.
То, что я хотел бы знать, возможно ли программно сравнить цвет фона с произведенным цветом и если это слишком неразличимо, чтобы тогда отказаться и восстановить цвет.
Я навел справки на Google об ответе, но я не могу найти тот. Я обычно не программист GUI, также, таким образом, я не работаю с цветом таким образом настолько часто.