首先在这里发帖,所以我为任何错误道歉。
基本上,当我运行代码时,除了更改背景颜色外,一切正常。出于某种原因,它总是灰色的。我试图将它改为黑色,但它不起作用,我不知道为什么。
我认为应该更改背景颜色的代码的主要部分是: wattron(mainWindow,COLOR_BLACK);
任何有关如何将我的背景更改为黑色的帮助将不胜感激。谢谢你们!
这是我到目前为止的情况,以防它为我的问题提供一些背景信息:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <curses.h>
#include <time.h>
// Variables
int nlines;
int ncols;
int x;
int y;
int y0;
int x0;
int input;
// Constants
const int MAX_LINES = 10;
const int MAX_COLUMNS = 10;
// Main function
int main(void) {
WINDOW * mainWindow;
// Initialize ncurses
if ( (mainWindow = initscr()) == NULL) {
fprintf(stderr, "Could not initialize ncurses!\n");
exit(EXIT_FAILURE);
}
// Call function to use color
start_color();
// Create my own color pairs
init_pair(1, COLOR_CYAN, COLOR_BLACK);
init_pair(2, COLOR_BLUE, COLOR_RED);
// First clear off the screen
clear();
// Move the cursor
y = 8;
x = 30;
move(y, x);
// Refresh
refresh();
// Test output - working
// printw("Testing...");
waddch(mainWindow, 'T' | A_UNDERLINE | COLOR_PAIR(1));
waddch(mainWindow, 'E' | A_UNDERLINE | COLOR_PAIR(2));
waddch(mainWindow, 'S' | A_UNDERLINE | COLOR_PAIR(1));
waddch(mainWindow, 'T' | A_UNDERLINE | COLOR_PAIR(2));
waddch(mainWindow, 'I' | A_UNDERLINE | COLOR_PAIR(1));
waddch(mainWindow, 'N' | A_UNDERLINE | COLOR_PAIR(2));
waddch(mainWindow, 'G' | A_UNDERLINE | COLOR_PAIR(1));
waddch(mainWindow, '.' | A_UNDERLINE | COLOR_PAIR(2));
waddch(mainWindow, '.' | A_UNDERLINE | COLOR_PAIR(1));
waddch(mainWindow, '.' | A_UNDERLINE | COLOR_PAIR(1));
waddch(mainWindow, '.' | A_UNDERLINE | COLOR_PAIR(2));
// Make background a different color
wattron(mainWindow, COLOR_BLACK);
// Hold until user inputs a character
input = getch();
// Clean up
delwin(mainWindow);
endwin();
refresh();
return EXIT_SUCCESS;
}
答案 0 :(得分:1)
答案 1 :(得分:0)
在调用 wattron(WINDOW* win, chtype ch)
中,您不能将 COLOR_BLACK 用作 ch
,因为 COLOR_BLACK 是一个整数,而不是一个属性(chtype
的值)。您应该使用 COLOR_PAIR
:
wattron(mainWindow, COLOR_PAIR(0)); // The pair number 0 is the terminal's default pair (white foreground, black background).
请注意,wattron
仅启用指定的属性。如果你想设置一个窗口的背景(它是每个单元格的重置属性),你最好使用wbkgd(WINDOW *win, chtype ch)
。您可以在 wbkgd(3ncurses) manual page 中找到它的文档。
对我帮助最大的 ncurses 教程是 here。我建议您阅读第 10 种颜色部分。