Linux 课程及;Ubuntu终端:退出终端时颜色会改变

Linux 课程及;Ubuntu终端:退出终端时颜色会改变,linux,ubuntu,ncurses,Linux,Ubuntu,Ncurses,当我退出我的终端(Ubuntu终端)并返回时,我的程序的颜色已经改变了。它们不是随机变化的,而是特定的颜色 我的setColor函数,它返回一个无符号整数 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) { b

当我退出我的终端(Ubuntu终端)并返回时,我的程序的颜色已经改变了。它们不是随机变化的,而是特定的颜色

我的setColor函数,它返回一个无符号整数

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;

}
编辑:看起来它和Ubuntu终端有关。使用xterm,它可以工作。而且,颜色值不会改变,所以可能与Ubuntu终端的紫色有关

void Console::useColor(unsigned int pair) {

    wattron(win(), COLOR_PAIR(pair));

}