当前位置: 技术问答>linux和unix
如何输出彩色字符?
来源: 互联网 发布时间:2014-11-10
本文导语: 在LINNUX下用C编程,如何输出彩色字符? | (引自网上,出处似乎是清华BBS) 1.开一个 new window (newwin) 2.设定 window 的彩色属性 (wattrset) ==> 在设定彩色属性之前应该先设定颜...
在LINNUX下用C编程,如何输出彩色字符?
|
(引自网上,出处似乎是清华BBS)
1.开一个 new window (newwin)
2.设定 window 的彩色属性 (wattrset)
==> 在设定彩色属性之前应该先设定颜色的 "pair" ,所谓的 "pair" 是指
foreground及background的颜色。curses的颜色有下面几种 (type为
short) :
COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE,
COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE
用init_pair(short pair, short f_color, short b_color)来设定 pair,
for example:
init_pair(100, COLOR_RED, COLOR_BLUE)
就设定了编号为 100, 蓝底红字的 color pair 了.
另外你要是嫌这几种颜色太单调了, 可以用 init_color 来设定色彩, 细节
这边就不谈了.
然後就用 wattrset(WINDOW* pwindow, short color_pair)设定你window的
颜色, for example:
wattrset(pwindow, 100) 就设定了一个蓝底红字的 window (不要忘记
这儿的 100 是刚刚用 init_pair设定的值)
∶ 3.印在 window 的字就自动变成那个颜色了 (mvwprintw, mvwaddstr, ...)
==> 这句... 该不会有问题吧.
4.想要印不同颜色的字,只要把那个字 "OR" (|) 不同的颜色即可 (记住, 这种有属性的字要用 int,不能用 char)
==> 其实型别不是用 int, 而是用 chtype (不过没有差别, 去查查 curses.h就知道) , 譬如说, 你想要在刚刚设定为蓝底红字的 window印一个别的颜色的
'A' 字, 可以这麽做 :
init_pair(another_color_pair, COLOR_随便, COLOR_随便) -->先设定另一个 color pair
char cascii = 'A';
chtype cascii_color = cascii | another_color_pair;
再把 cascii_color 印出来就是一个你想要颜色的 A 了.
1.开一个 new window (newwin)
2.设定 window 的彩色属性 (wattrset)
==> 在设定彩色属性之前应该先设定颜色的 "pair" ,所谓的 "pair" 是指
foreground及background的颜色。curses的颜色有下面几种 (type为
short) :
COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE,
COLOR_MAGENTA, COLOR_CYAN, COLOR_WHITE
用init_pair(short pair, short f_color, short b_color)来设定 pair,
for example:
init_pair(100, COLOR_RED, COLOR_BLUE)
就设定了编号为 100, 蓝底红字的 color pair 了.
另外你要是嫌这几种颜色太单调了, 可以用 init_color 来设定色彩, 细节
这边就不谈了.
然後就用 wattrset(WINDOW* pwindow, short color_pair)设定你window的
颜色, for example:
wattrset(pwindow, 100) 就设定了一个蓝底红字的 window (不要忘记
这儿的 100 是刚刚用 init_pair设定的值)
∶ 3.印在 window 的字就自动变成那个颜色了 (mvwprintw, mvwaddstr, ...)
==> 这句... 该不会有问题吧.
4.想要印不同颜色的字,只要把那个字 "OR" (|) 不同的颜色即可 (记住, 这种有属性的字要用 int,不能用 char)
==> 其实型别不是用 int, 而是用 chtype (不过没有差别, 去查查 curses.h就知道) , 譬如说, 你想要在刚刚设定为蓝底红字的 window印一个别的颜色的
'A' 字, 可以这麽做 :
init_pair(another_color_pair, COLOR_随便, COLOR_随便) -->先设定另一个 color pair
char cascii = 'A';
chtype cascii_color = cascii | another_color_pair;
再把 cascii_color 印出来就是一个你想要颜色的 A 了.