控制台操作之字体颜色

必须有#include<windows.h>

void color(short x)                   //设置颜色
{
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
		//SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数
}

然后通过调用color函数来控制控制台屏幕字体颜色。
其中:
color(0);
printf(“黑色\n”);
color(1);
printf(“蓝色\n”);
color(2);
printf(“绿色\n”);
color(3);
printf(“湖蓝色\n”);
color(4);
printf(“红色\n”);
color(5);
printf(“紫色\n”);
color(6);
printf(“黄色\n”);
color(7);
printf(“白色\n”);
color(8);
printf(“灰色\n”);
color(9);
printf(“淡蓝色\n”);
color(10);
printf(“淡绿色\n”);
color(11);
printf(“淡浅绿色\n”);
color(12);
printf(“淡红色\n”);
color(13);
printf(“淡紫色\n”);
color(14);
printf(“淡黄色\n”);
color(15);
printf(“亮白色\n”);
在0-15范围修改的是字体的颜色超过15改变的是文本背景色。
当然还有其它的颜色修改方式:如下(参考了百度百科对SetConsoleTextAttribute的解释
---------------------------------------------------------分割线---------------------------------------------------------

SetConsoleTextAttribute是API设置控制台窗口字体颜色和背景色的函数。

原型定义:BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);

GetStdHandle是一个Windows API函数。
语法:
HANDLE GetStdHandle( DWORD nStdHandle );
GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。
值:
nStdHandle
值为下面几种类型的一种:

含义
STD_INPUT_HANDLE 标准输入的句柄
STD_OUTPUT_HANDLE 标准输出的句柄
STD_ERROR_HANDLE 标准错误的句柄

wAttributes是用来设置颜色的参数

wAttributes 颜色 对应的值
FOREGROUND_BLUE 字体颜色:蓝 1
FOREGROUND_GREEN 字体颜色:绿 2
FOREGROUND_RED 字体颜色:红 4
FOREGROUND_INTENSITY 前景色高亮显示 8
BACKGROUND_BLUE 背景颜色:蓝 16
BACKGROUND_GREEN 背景颜色:绿 32
BACKGROUND_RED 背景颜色:红 64
BACKGROUND_INTENSITY 背景色高亮显示 128

也就是说SetConsoleTextAttribute函数是靠一个字节的低四来控制前景色,高四位来控制背景色。

#include <stdio.h>
#include <windows.h>                                                 //使用SetConsoleTextAttribute函数一定要加上windows.h
int main()
{ 
HANDLE color;                                                            //创建句柄
color=GetStdHandle(STD_OUTPUT_HANDLE);        //设置句柄值 实例化句柄
SetConsoleTextAttribute(color,BACKGROUND_INTENSITY|BACKGROUND_BLUE|FOREGROUND_GREEN);                                                                  //设置背景为高亮蓝色,暗绿色字体。但是用句柄名替换了参数
printf("这是暗绿色!\n"); 
system("pause");                                            //调用cmd暂停命令
}

根据此修改字体及背景颜色:

属性 含义
FOREGROUND_BLUE 文字颜色包含蓝色
FOREGROUND_GREEN 文字颜色包含绿色
FOREGROUND_RED 文字颜色包含红色
FOREGROUND_INTENSITY 文字颜色加强
BACKGROUND_BLUE 背景颜色包含蓝色
BACKGROUND_GREEN 背景颜色包含绿色
BACKGROUND_RED 背景颜色包含红色
BACKGROUND_INTENSITY 背景颜色加剧
COMMON_LVB_LEADING_BYTE 前导字节
COMMON_LVB_TRAILING_BYTE 尾随字节
COMMON_LVB_GRID_HORIZONTAL 顶部水平
COMMON_LVB_GRID_LVERTICAL 左垂直
COMMON_LVB_GRID_RVERTICAL 正确的垂直
COMMON_LVB_REVERSE_VIDEO 反转前景和背景属性
COMMON_LVB_UNDERSCORE 下划线

关于调色,网上有很多就不缀叙了。百度吧~~~

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | FOREGROUND_RED|BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
puts("这是白色背景 红色字体");

根据十六进制修改字体及背景颜色:
颜色属性由两个十六进制数字指定: 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色

参考链接:
来自一个初中生的技术贴
Consoles

扫描二维码关注公众号,回复: 9105296 查看本文章
发布了15 篇原创文章 · 获赞 9 · 访问量 7957

猜你喜欢

转载自blog.csdn.net/weixin_44171004/article/details/86680351