当我退出终端(Ubuntu终端)并重新登录时,程序的颜色已经改变。它们不会随机变化,而是变为特定的颜色。
我的setColor函数,它返回一个unsigned int ...
unsigned int Console::setColor(float r, float g, float b, float r2, float g2, float b2) {
bool bkgd = true;
if (r2 == -1.f || g2 == -1.f || b2 == -1.f) {
bkgd = false;
}
clamp(r);
clamp(g);
clamp(b);
clamp(r2);
clamp(g2);
clamp(b2);
init_color(instance().colorNum * 2, static_cast<int>(r * 1000.f), static_cast<int>(g * 1000.f), static_cast<int>(b * 1000.f));
init_color(instance().colorNum * 2 + 1, static_cast<int>(r2 * 1000.f), static_cast<int>(g2 * 1000.f), static_cast<int>(b2 * 1000.f));
if(bkgd) {
init_pair(instance().colorNum, instance().colorNum * 2, instance().colorNum * 2 + 1);
} else {
init_pair(instance().colorNum, instance().colorNum * 2, -1);
}
return ++instance().colorNum - 1;
}
...我可以在此功能中使用它来激活颜色:
void Console::useColor(unsigned int pair) {
wattron(win(), COLOR_PAIR(pair));
}
编辑:看起来它与Ubuntu终端有关。使用xterm,它可以工作。此外,颜色值不会改变,所以它可能与Ubuntu终端的紫色有关吗?