好的,我有一个 Qt GUI 应用程序,我决定在其中随机生成调色板(允许我根据数据的唯一 ID 区分显示的数据)。
我使用的算法是这样的:
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);
}
}
在大多数情况下,这给了我很好的柔和色彩,在灰色背景下非常明显。但是,偶尔会出现不易与背景区分的黄色。
我想知道的是,是否可以以编程方式将背景颜色与生成的颜色进行比较,如果它太难以区分,然后丢弃并重新生成颜色。
我在谷歌上四处寻找答案,但我找不到答案。我通常也不是 GUI 程序员,所以我不经常以这种方式处理颜色。