ncurses關於顏色系統:start_color(),has_colors(),init_pair(),color_content(),pait_content()
- Copyright(C) NCURSES Programming HOWTO
關於顏色系統
基礎知識
如果生命中沒有顏色將會單調無趣。curses 有一個非常不錯的顏色處理機制。讓我們通過以下程式來了解一下顏色系統: 例:一個簡單的顏色使用例子
/*
Compile: gcc main.c -lncurses
*/
#include <ncurses.h>
#include <stdlib.h>
#include <string.h>
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string);
int main(int argc, char *argv[])
{
initscr(); /*啟動curses 模式*/
if(has_colors() == FALSE)
{
endwin();
printf("You terminal does not support color\n");
exit(1);
}
start_color(); /*啟動color 機制*/
init_pair(1, COLOR_RED, COLOR_BLACK);
attron(COLOR_PAIR(1));
print_in_middle(stdscr,LINES / 2, 0, 0, "Viola !!! In color ...");
attroff(COLOR_PAIR(1));
getch();
endwin();
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string)
{
int length, x, y;
float temp;
if(win == NULL)
win = stdscr;
getyx(win, y, x);
if(startx != 0)
x = startx;
if(starty != 0)
y = starty;
if(width == 0)
width = 80;
length = strlen(string);
temp = (width-length)/2;
x = startx + (int)temp;
mvwprintw(win, y, x, "%s", string);
refresh();
}
通過這個例子你可以看到,要啟動彩色機制,必須先呼叫start_color()
函式,之後就可以在終端螢幕上呼叫其它處理顏色的函式。如果要檢測當前螢幕是否支援彩色顯示,可以呼叫has_colors()
函式,如果終端螢幕不支援彩色顯示,那麼該函式將返回FLASE
。 在呼叫start_color()
函式後,curses 就初始化了當前終端支援的所有顏色。然後就可通過像COLOR_BLACK
這樣的巨集呼叫各種顏色。你現在如果要使用顏色,就必須成對定義前景色和背景色。所有的顏色都是這樣使用的。這意味著你必須用init_pair()
函式給每一對顏色編號併為其設定前景色和背景色。之後這個編號就作為呼叫顏色對的引數, 傳遞給COLOR_PAIR()
函式,用來呼叫你已定義的顏色對。也許一開始你會覺得這樣做很麻煩,但它會讓你很輕鬆管理顏色對。“dialog”
就使用了這種管理顏色的方法。你可以通過原始碼瞭解這個用Shell 指令碼編寫的對話方塊。開發者應該在程式開始的部分定義並且初始化所需要使用的顏色對常量。這樣做會讓我們更容易的設定顏色屬性。 以下的這些顏色已經被預定義在ncurses.h
裡,你可以將它們當作顏色引數傳遞給相應的顏色函式。
COLOR_BLACK 0 黑色
COLOR_RED 1 紅色
COLOR_GREEN 2 綠色
COLOR_YELLOW 3 黃色
COLOR_BLUE 4 藍色
COLOR_MAGENTA 5 洋紅色
COLOR_CYAN 6 藍綠色, 青色
COLOR_WHITE 7 白色
改變顏色定義
init_color()
函式可以用來在初始化顏色的時候改變某個顏色的RGB
值。比如你想減弱預定的紅色設定。你就可以這樣呼叫此函式:
init_color(COLOR_RED, 700, 0, 0);
/* 引數1 : 顏色名稱
/* 引數2, 3, 4 : 分別為R(red),G(green),B(blue)的數值(最小值:0 最大值:1000)*/
如果你的顯示終端無法改變顏色設定,函式將返回ERR
。can_change_color()
函式可以用來監測你的終端是否支援這樣的顏色改變。RGB
引數的值是0
到1000
的整數。預設的紅色(COLOR_RED)
的定義是R:1000,G:0,B:0
。
顏色定義內容
color_content()
函式和pair_content()
函式可以用來檢視當前顏色的設定。
相關文章
- CIE1931-XYZ表色系統
- color-關於顏色值
- 關於所有馬的顏色都相同
- 關於a標籤的字型顏色問題
- 認識ncurses
- 編譯 ncurses編譯
- 關於web中的顏色表示方法,你知道多少?Web
- 《噬神者3》最新情報:全新荒神角色系統放出!
- 關於未來美顏濾鏡發展的幾點思考
- 用ncurses庫寫掃雷
- Flutter | 一個關於背景顏色引發的打臉慘案Flutter
- 關於美顏sdk中人臉識別專案的設計思路
- 第一個ncurses程式: hello world !!!
- ncurses視窗機制:wprintw(), wrefresh()
- 關於美顏SDK,還有這些你不知道的知識
- 01關於版本控制系統
- 進化的覆蓋率-程式碼實時染色系統 - 周為 / 翟帥
- 如何在Linux中安裝Ncurses庫Linux
- 關於linux類系統的操作Linux
- sql統計-關於學生成績SQL
- 美顏SDK全身美顏是基於什麼技術實現的?
- 關於IT,關於技術
- 人工智慧配色系列(一)方案與規則人工智慧
- 如何使用暗色系調色lightroom調色預設!OOM
- AI測膚:不再止步於”表面美顏”AI
- ncurses視窗機制:newwin(),wprintw(),delwin(),box(),wborder(),
- ncurses輸出函式:字元+字串的輸出函式字元字串
- ncurses輸入函式:字元+字串的輸入函式字元字串
- 關於Linux系統和Windows系統你瞭解多少?LinuxWindows
- linux系統關於kernel.sem調優Linux
- 關於mes系統硬體配置問題
- 專業暗色系攝影調色效果lr預設
- 靈感 | 12組少女心粉色系網頁設計網頁
- ncurses鍵盤管理:cbreak,keypad,getch(),KEY_F(),clrtoeol()
- Linux核心配置 make menuconfig時出現缺失ncurses庫Linux
- 老曹與老顏的遊戲(關於一些題目中可以列出公式的處理)遊戲公式
- 分散式系統–>(關於系統應用的基本概念)分散式
- 關於++[[]][+[]]+[+[]]