Ncurses- 使用颜色
Posted Evan_Lai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ncurses- 使用颜色相关的知识,希望对你有一定的参考价值。
Ncurses(三)- 使用颜色
检查颜色可用
在使用颜色之前,你需要知道你的终端是否支持颜色显示,你可以通过以下if检测:
if (has_colors() == FALSE) {
endwin();
printf("Your terminal does not support color\\n");
exit(1);
}
当然了,我相信这是不需要的,这确认了颜色显示可用
使用颜色
在使用颜色之前你必须先执行start_color();
函数,这个函数不带任何参数
在开始之前,我们了解到curses已经为我们定义了一些颜色宏:
COLOR_BLACK 黑色
COLOR_RED 红色
COLOR_GREEN 绿色
COLOR_YELLOW 黄色
COLOR_BLUE 蓝色
COLOR_MAGENTA 品红色
COLOR_CYAN 青色
COLOR_WHITE 白色
当然,你也可以通过int init_color(short color, short r, short g, short b);
来定义一个RGB颜色
然后,我们需要使用init_pair(index,frontground,background);
来设置颜色对,例如:
init_pair(1, COLOR_YELLOW, COLOR_MAGENTA);
这定义一个配色序1,前景色为黄色,背景色为品红色的配色对
接着我们可以使用颜色了,来看一个例子
attron(COLOR_PAIR(1));
mvaddstr(10,10,"Hello World!");
attroff(COLOR_PAIR(1));
在设置文字之前,你需要使用attron(COLOR_PAIR(index));
来开启一个颜色对使用
请养成好习惯,在使用完成后通过attroff(COLOR_PAIR(index));
来销毁当前使用
好的,我们来完善这一例子:
#include <bits/stdc++.h>
#include <ncurses.h>
int main(){
initscr();
start_color();
init_pair(1, COLOR_YELLOW, COLOR_MAGENTA);
init_pair(2,COLOR_BLUE,COLOR_GREEN);
attron(COLOR_PAIR(1));
mvaddstr(10,10,"Hello World!");
attroff(COLOR_PAIR(1));
attron(COLOR_PAIR(2));
mvaddstr(12,10,"This is my life!");
attroff(COLOR_PAIR(2));
refresh();
getch();
endwin();
return 0;
}
编译这一代码,我们将得到如下效果:
至此,我们完成这一部分
以上是关于Ncurses- 使用颜色的主要内容,如果未能解决你的问题,请参考以下文章
ncurses color_content()给了我错误的值
我如何保证终端具有 NCURSES 的 Unicode/宽字符支持?
c_cpp UV Index Indicator订阅PubNub并使用颜色显示UV索引值。博文的代码片段。在这里查看项目:https:/