C语言教你怎么改变字体颜色
初学c的小伙伴可能已经对那个黑底白字的框有些厌倦了,不妨加点颜色,增加加可读性.
废话不多说,先来看一下效果图:
/*
颜色函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),前景色 | 背景色 | 前景加强 | 背景加强);前景色:数字0-15 或 FOREGROUND_XXX 表示 (其中XXX可用BLUE、RED、GREEN表示) 前景加强:数字8 或 FOREGROUND_INTENSITY 表示背景色:数字16 32 64 或 BACKGROUND_XXX 三种颜色表示 背景加强: 数字128 或 BACKGROUND_INTENSITY 表示
主要应用:改变指定区域字体与背景的颜色
前景颜色对应值: 0=黑色 8=灰色 1=蓝色 9=淡蓝色 十六进制 2=绿色 10=淡绿色 0xa 3=湖蓝色 11=淡浅绿色 0xb 4=红色 12=淡红色 0xc 5=紫色 13=淡紫色 0xd 6=黄色 14=淡黄色 0xe 7=白色 15=亮白色 0xf 也可以把这些值设置成常量。
*/
#include <stdio.h>
#include <windows.h>
void color(short x) //自定义函根据参数改变颜色
{if(x>=0 && x<=15)//参数在0-15的范围颜色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一个参数,改变字体颜色 else//默认的颜色白色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int main()
{ printf("此处为没调用颜色函数之前默认的颜色\n");//调用自定义color(x)函数 改变的颜色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");color(16); //因为这里大于15,恢复默认的颜色 printf("回到原来颜色\n");//直接使用颜色函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_INTENSITY);printf("红色字体 前景加强 绿色背景 背景加强\n"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15 | 8 | 128 | 64);printf("亮白色字体 前景加强 红色背景 背景加强\n"); //声明句柄再调用函数 HANDLE JB = GetStdHandle(STD_OUTPUT_HANDLE);//创建并实例化句柄 SetConsoleTextAttribute(JB, 2 | 8);printf("颜色及对应数字表:\n");for(int i = 0;i < 1000;i ++){//color(16);printf(" "); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);printf("%-3d", i);color(16);printf(" "); if(i % 16 == 0) printf("\n");}color(16);return 0;//类似的函数还有system("color XX");(X是十六进制0~F之间的数,不过这种函数改变的是整个画面,而不能让多处局部变色;
}
后期代码补充:
SetConsoleTextAttribute是Windows系统中一个可以设置控制台窗口字体颜色和背景色的计算机函数,该函数被广泛应用于软件开发中。使用此函数前,必须包含Windows.h头文件,即#include <Windows.h>。
函数定义:
BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
参数详解:
hConsoleOutput:控制台屏幕缓冲区的句柄。句柄必须具有GENERIC_READ访问权限。CreateFile、CreateConsoleScreenBuffer和GetStdHandle返回的句柄具有GENERIC_READ和GENERIC_WRITE访问权限。有效的访问权限包括GENERIC_READ和GENERIC_WRITE 通用访问权限。
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
返回值:
如果函数成功,则返回值非零。
如果函数失败,则返回值为零。要获取扩展的错误信息,请调用GetLastError。
#include <stdio.h>
#include<stdlib.h>
#include <windows.h>
/**
x的取值:
属性 意义 实际数值(十进制、十六进制、二进制)
FOREGROUND_BLUE 前景色包含 蓝色 1 0x1 0000000000000001
FOREGROUND_GREEN 前景色包含 绿色 2 0x2 0000000000000010
FOREGROUND_RED 前景色包含 红色 4 0x4 0000000000000100
FOREGROUND_INTENSITY 前景色加强 8 0x8 0000000000001000
BACKGROUND_BLUE 背景色包含 蓝色 16 0x10 0000000000010000
BACKGROUND_GREEN 背景色包含 绿色 32 0x20 0000000000100000
BACKGROUND_RED 背景色包含 红色 64 0x40 0000000001000000
BACKGROUND_INTENSITY 背景色加强 128 0x80 0000000010000000
COMMON_LVB_LEADING_BYTE 前导字节 256 0x100 0000000100000000
COMMON_LVB_TRAILING_BYTE 尾随字节 512 0x200 0000001000000000
COMMON_LVB_GRID_HORIZONTAL 顶部水平网格 1024 0x400 0000010000000000
COMMON_LVB_GRID_LVERTICAL 左竖直网格 2048 0x800 0000100000000000
COMMON_LVB_GRID_RVERTICAL 右竖直网格 4096 0x1000 0001000000000000
COMMON_LVB_REVERSE_VIDEO 前景和背景反转 16384 0x4000 0100000000000000
COMMON_LVB_UNDERSCORE 下划线 32768 0x8000 1000000000000000前景由x的二进制的前四位的值决定: 0001、0010、0100分别表示蓝、绿、红,而1000表示前景加强 ,于是前景颜色共有2^4=16种可能。 同理背景颜色是第5到8位
*/
void color(int x) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
}
int main() {printf("\n\n二进制颜色对照表:\n"); char str[8];for(int i = 0;i < 256;i ++) {// 调用颜色函数 color(i);// 获得i的2进制的值 itoa(i, str, 2); // 2即是代表转换为2进制printf("%08s", str);// 恢复默认的颜色 color(7);printf(" "); // 每行输出16个 if((i + 1) % 16 == 0)printf("\n");}printf("\n十进制颜色对照表:\n"); for(int i = 0;i < 256;i ++) {color(i);printf("%3d", i);color(7);printf(" "); if((i + 1) % 16 == 0)printf("\n");}printf("\n十六进制颜色对照表:\n"); for(int i = 0;i < 256;i ++){color(i);
// color(i | COMMON_LVB_GRID_HORIZONTAL | COMMON_LVB_GRID_LVERTICAL | COMMON_LVB_GRID_RVERTICAL | COMMON_LVB_UNDERSCORE);printf("%02x", i);color(7);printf(" "); if((i + 1) % 16 == 0)printf("\n");
// if((i + 1) % 16 == 0 && (i + 1) / 16 % 16 == 0) {
// printf("\n\n");
// } }return 0;
}
效果图:
带有网格的:
C语言教你怎么改变字体颜色相关推荐
- android 字体颜色选择,Android中颜色选择器和改变字体颜色的实例教程
易采站长站为您分析Android中颜色选择器和改变字体颜色的实例教程,其中改变字体颜色用到了ColorPicker颜色选择器,需要的朋友可以参考下 1.构建一张七彩图: 我们经常看到这种样子的颜色选择 ...
- vba 字体颜色_Excel填充单元格颜色和改变字体颜色,用VBA是怎样实现的呢?
大家好,我是:易天壹课堂,如果有喜欢VBA编程的朋友请关注我,如果反应好,我会为大家带来连载课程,VBA0基础到到完成整套程序开发的教程. 很多朋友就会说,你这在excel中这太简单了,直接点油漆桶就 ...
- html改游戏聊天字体颜色,html点击按钮改变字体颜色怎么实现
html点击按钮改变字体颜色的实现方法:1.创建一个html文件:2.在html文件中添加html代码架构:3.在body标签里面使用button标签实现一个按钮,并使用style给按钮添加样式以及使 ...
- java 怎样设置文本域的字体颜色_java的JTextArea中怎么改变字体颜色
展开全部 java swing 中JTEXTAREA不能改变字体颜色,它是纯文本组件,可以使用JTEXTPANE,通过操作DOCUMENT文档来控制JTEXTPANE显示的内容,下面的代码在一个323 ...
- 终端改变字体颜色和背景,控制光标,设置屏幕,更改样式与ANSI Esc(\033,\x1B,\e)转义序列用法
简介 ANSI 转义序列( Esc , \033 , \x1B , \e )是个特殊转义字符,它可以在终端控制光标,改变字体颜色和背景,设置屏幕或者使用私有模式来改变终端样式,使终端样式更美观,功能更 ...
- oracle 输出字体颜色,PS改变字体颜色方法图解
PS怎样改变字体颜色?一般有两种情况,一是正在输入文字格式,二是图片格式,我准备分类讲解,愿你有所收获. 步骤 一是正在输入文字格式 1.新建文件,打开文字工具栏,设计好字体和颜色 2.输入黑色的&q ...
- Element UI非活性时(Disabled),改变字体颜色
Element UI组件在非活性时(Disabled),字体颜色太淡,显示不清楚,加上以下样式,就可以改变字体颜色了. .el-checkbox__input.is-disabled + .el-ch ...
- qlabel setPalette改变字体颜色失效
今天遇到一个奇怪的事情,QLabel setPalette()改变字体颜色无效,我是想把一个qlabel的字体颜色改变成红色,但是运行后发现颜色一直没改变,都是黑色.设置颜色代码如下: QPalett ...
- java文本框的内容改变颜色_关于在java文本框类型组件改变字体颜色
1.由于java可视化常用的文本框组件,比如JTextArea,JTextField属于纯文本类型,类似于电脑中的txt文本文件,最多可以设置字体的格式和大小,不能改变字体颜色,所以这就需要另外一种叫 ...
最新文章
- golang库context学习
- 用于机器人导航辅助的6自由度姿态估计的平面辅助视觉惯性里程计
- 1.9 GRU 单元-深度学习第五课《序列模型》-Stanford吴恩达教授
- oracle转义字符
- HTTP和HTTPS协议及工作原理分析
- 【iCore3 双核心板】例程三十五:HTTP_IAP_ARM实验——更新升级STM32
- Hibernate_2_Hibernate中对象状态及转化_一级缓存_Session详解_HQL/SQL/Criteria_一对多关系_级联操作
- Linux 内核实验室 —— 基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境
- springcloud是如何进行服务治理的
- js一些平时会用到的
- 《RECURRENT BATCH NORMALIZATION》
- sql查询字段值只为汉字(桃)
- 基于游戏开发的C语言大作业视频集锦
- 基于C#的socket编程的TCP异步实现
- python实现异步的原理_一篇文章理解Python异步编程的基本原理
- 汇编语言中xor指令_汇编语言基本指令
- 南京邮电大学计算机科学楼,南京邮电大学bbs
- 一种基于区块链的物联网架构设计
- 通过网址自动网页截图(Selenium实现)
- 【文末送书】知识体系目录