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表色系統
- ncurses庫移植
- 編譯 ncurses編譯
- ncdu – 基於ncurses庫的磁碟使用分析器
- LNAV:基於 Ncurses 的日誌檔案閱讀器
- 關於web中的顏色表示方法,你知道多少?Web
- IOS 關於16進位制轉顏色 的設定iOS
- 《噬神者3》最新情報:全新荒神角色系統放出!
- 關於未來美顏濾鏡發展的幾點思考
- VB.NET中關於DataGrid顏色的自定義。 (轉)
- 用ncurses庫寫掃雷
- Flutter | 一個關於背景顏色引發的打臉慘案Flutter
- 關於美顏sdk中人臉識別專案的設計思路
- 關於分散式系統分散式
- Win10系統怎麼關閉顏色篩選器Win10
- 第一個ncurses程式: hello world !!!
- ncurses視窗機制:wprintw(), wrefresh()
- 關於美顏SDK,還有這些你不知道的知識
- 01關於版本控制系統
- 關於安裝MFGPRO系統
- 關於系統分析設計
- 進化的覆蓋率-程式碼實時染色系統 - 周為 / 翟帥
- 利用OpenCV生成關於某點的顏色徑向均勻漸變影象OpenCV
- 關於SSH中對於action的監聽問題(關於系統計數)
- sql統計-關於學生成績SQL
- 關於系統高可用的思考
- 關於QT的系統總結QT
- 關於aix的系統升級AI
- 關於《推薦系統實踐》
- 關於ORACLE自動統計CBO統計資訊Oracle
- 如何在Linux中安裝Ncurses庫Linux
- 美顏SDK全身美顏是基於什麼技術實現的?
- 百行程式碼構建神經網路黑白圖片自動上色系統行程神經網路
- 人工智慧配色系列(一)方案與規則人工智慧
- AI測膚:不再止步於”表面美顏”AI
- 關於TTMS影院系統的總結
- 關於oracle自動收集統計資訊Oracle