当前位置: 技术问答>linux和unix
Linux下如何直接输出彩色文本?类似于DOS的直接写屏的
来源: 互联网 发布时间:2015-01-06
本文导语: DOS文本模式下可通过写地址0xB8000000开始的内存直接输出彩色文本,不用移动当前光标,而且显示速度比printf快。 Linux下能实现类似的功能呢? | 好好看看ncurses编程,都有的。 简单的原理是cur...
DOS文本模式下可通过写地址0xB8000000开始的内存直接输出彩色文本,不用移动当前光标,而且显示速度比printf快。
Linux下能实现类似的功能呢?
Linux下能实现类似的功能呢?
|
好好看看ncurses编程,都有的。
简单的原理是curses可以使用buffer,你在buffer中修改,然后刷新到屏幕。buffer就是一块内存,相当于直接写屏。
一般linux的console编程大多用curses,这方面的资料很多的,ncurses自己就带了不少例子,你装一个ncurses-devel包,在/usr/share/doc/ncurses-devel-5.2/test下面有例子。
简单的原理是curses可以使用buffer,你在buffer中修改,然后刷新到屏幕。buffer就是一块内存,相当于直接写屏。
一般linux的console编程大多用curses,这方面的资料很多的,ncurses自己就带了不少例子,你装一个ncurses-devel包,在/usr/share/doc/ncurses-devel-5.2/test下面有例子。
|
用ncurses,下面是一个简单例子,写一行黑底红字
#include
int main(int argc, char* argv[]){
initscr();
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
attron(COLOR_PAIR(1));
mvaddstr(11, 30, "Hello, World!");
refresh();
getch();
endwin();
return 0;
}
gcc -lcurses -o test test.c
#include
int main(int argc, char* argv[]){
initscr();
start_color();
init_pair(1, COLOR_RED, COLOR_BLACK);
attron(COLOR_PAIR(1));
mvaddstr(11, 30, "Hello, World!");
refresh();
getch();
endwin();
return 0;
}
gcc -lcurses -o test test.c
|
用freebuffer可以。