属性是在屏幕上打印字符时使用的特殊终端功能。字符可以以粗体、下划线、闪烁等形式打印。在 ncurses 中,您可以启用或禁用属性以获得更好看的效果。下表列出了可能的属性。
Ncurses 定义了八种颜色,您可以在支持颜色的终端上使用。首先,使用 start_color() 初始化颜色数据结构,然后使用 has_colors() 检查终端功能。start_color() 将初始化 COLORS,终端支持的最大颜色数,以及 COLOR_PAIR,您可以定义的最大颜色对数。
属性可以与 OR 运算符组合使用 ' COLORPAIRS-1 COLORS-1.
int color_content(color, r, g, b)
获取颜色分量r, g和b对于color.
以及如何组合属性和颜色?有些终端(如 Linux 中的控制台)有颜色,有些则没有(如 xterm、vs100 等)。以下代码应该可以解决这个问题
首先,CheckColor 函数使用 start_color() 初始化颜色,然后 has_colors() 函数将在当前终端支持颜色时返回 TRUE。我们检查这一点并调用 init_pair(...) 来组合前景色和背景色,并调用 wattrset(...) 为指定的窗口设置这些颜色对。或者,如果我们有一个黑白终端,我们可以单独使用 wattrset(...) 来设置属性。
为了在 xterm 中获得颜色,我发现最好的方法是使用带有 Midnight Commander 提供的已修补 terminfo 条目的 ansi_xterm。只需获取 ansi_xterm 和 Midnight Commander (mc-x.x.tar.gz) 的源代码。然后编译 ansi_xterm 并将 tic 与 mc-x.x.tar.gz 存档中的 xterm.ti 和 vt100.ti 一起使用。执行 ansi_xterm 并进行测试。