colors - 使用 init_color() 定义颜色值时遇到问题;在 c 中的 ncurses
问题描述
我init_color();
在 C 中使用 ncurses 来尝试定义新的 RGB 颜色值。但是,init_color();
一旦我运行程序,它就不会生效并更改默认颜色。
我曾尝试init_color();
在这两个语句之前和之后移动这些init_pair();
语句,start_color();
但没有运气。我还尝试使用不同的值(ASCII 和其他来源的数字)代替 ex。, 对于其中一个语句COLOR_MAGENTA
中的第一个参数,但也没有运气。init_color();
Mystart_color();
和语句都在程序其余部分之前的 main 函数中init_color();
。init_pair();
我的终端(使用 cloud9/cs50)支持 256 色(使用终端命令检查)。此外,所有颜色定义都在函数“main”之上。
int main(int argc, char *argv[])
{
// ensure that number of arguments is as expected
if (argc != 1)
{
fprintf(stderr, "Usage: ./lemonade\n");
return 1;
}
// start up ncurses
if (!startup())
{
fprintf(stderr, "Error starting up ncurses\n");
return 2;
}
// initialize colors
start_color();
// re-asign specific RGB value to colors
init_color(COLOR_MAGENTA, 254, 160, 207);
init_color(COLOR_GREEN, 37, 244, 82);
init_color(COLOR_BLUE, 96, 82, 186);
// used cyan for a different greeen
init_color(COLOR_CYAN, 46, 243, 74);
// used yellow for a grey
init_color(COLOR_YELLOW, 156, 156, 156);
// used red for a purple
init_color(COLOR_RED, 208, 196, 253);
// initilaize color pairs
init_pair(LOGO_PAIR, COLOR_MAGENTA, COLOR_GREEN);
init_pair(DRAWBORDERSSPECIAL_PAIR, COLOR_BLACK, COLOR_GREEN);
init_pair(BORDERS_PAIR, COLOR_WHITE, COLOR_BLACK);
init_pair(SPECIALNEXT_PAIR, COLOR_BLACK, COLOR_GREEN);
init_pair(SUNNYBLUE_PAIR, COLOR_WHITE, COLOR_BLUE);
init_pair(WEATHERGREEN_PAIR, COLOR_WHITE, COLOR_CYAN);
init_pair(CLOUDYGREY_PAIR, COLOR_WHITE, COLOR_YELLOW);
init_pair(HOTPURPLE_PAIR, COLOR_WHITE, COLOR_RED);
// clean
clean(); // clean includes (refresh(); and clear();)
// draw borders
drawborders();
// run screen 1
screenone();
// support color test
mvprintw(6, 50, "My terminal supports %d colors.", COLORS);
// has_color(); test
if (has_colors() == FALSE)
{
mvprintw(7, 50, "Your terminal does not support color \n");
}
// can_change_color(); test
if (can_change_color() == FALSE)
{
mvprintw(8, 50, "Can_change_color is false \n");
}
我希望这些init_color();
语句生效并将默认颜色(例如洋红色、黑色等)更改为新分配的特定 RGB 值,但是一旦程序运行它们就会保持不变。
我添加了对支持的颜色数量has_colors();
、 和的检查can_change_color();
。支持的颜色数返回8,has_colors();
返回true,最后can_change_color();
返回false。感谢您建议使用has_colors();
,can_change_color();
虽然这似乎是我不知道从这里去哪里的问题?
解决方案
嗯,我看不到你对has_colors()
and的调用can_change_color()
,应该用它来检测你是否被允许在你的系统上这样做?
这是您应该检查的第一件事。您的环境可能不允许更改颜色。
推荐阅读
- sql - SQL 合并数据但保留记录
- list - 列表中的多个变量并检查列表是否包含变量。序言
- google-api - 为什么 Google OAuth 客户端出现在开发中
- python - 使用 Python 获取公共网站的内容
- maven - Maven 构建错误 - SAP WebIDE MTA 应用程序
- timestamp - 在 Oracle Solaris 11.4 中查找特定时间戳之间的文件
- c# - Microsoft.Identity.Web AddMicrosoftIdentityWebApp - 无法设置 AccessDeniedPath
- google-apps-script - 添加新工作表更新时如何自动更新此功能
- asp.net-mvc - 发布时 ASP.net 核心 MVC 路由到索引而不是 home/index
- ruby - 在数据库中传递并保存哈希作为强参数