C语言如何改变字体颜色_第1页
C语言如何改变字体颜色_第2页
C语言如何改变字体颜色_第3页
C语言如何改变字体颜色_第4页
C语言如何改变字体颜色_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C语言如何改变字体颜色目录废话不多说,先来看一下效果图后期代码补充效果图初学c的小伙伴可能已经对那个黑底白字的框有些厌倦了,不妨加点颜色,增加加可读性.

废话不多说,先来看一下效果图

/*

颜色函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),前景色|背景色|前景加强|背景加强);

前景色:数字0-15或FOREGROUND_XXX表示(其中XXX可用BLUE、RED、GREEN表示)

前景加强:数字8或FOREGROUND_INTENSITY表示

背景色:数字163264或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

也可以把这些值设置成常量。

#includestdio.h

#includewindows.h

voidcolor(shortx)//自定义函根据参数改变颜色

if(x=0x=15)//参数在0-15的范围颜色

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);//只有一个参数,改变字体颜色

else//默认的颜色白色

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);

intmain()

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");

//声明句柄再调用函数

HANDLEJB=GetStdHandle(STD_OUTPUT_HANDLE);//创建并实例化句柄

SetConsoleTextAttribute(JB,2|8);

printf("颜色及对应数字表:\n");

for(inti=0;i1000;i++){

//color(16);printf("");

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),i);

printf("%-3d",i);

color(16);printf("");

if(i%16==0)printf("\n");

color(16);

return0;

//类似的函数还有system("colorXX");(X是十六进制0~F之间的数,不过这种函数改变的是整个画面,而不能让多处局部变色;

后期代码补充

SetConsoleTextAttribute是Windows系统中一个可以设置控制台窗口字体颜色和背景色的计算机函数,该函数被广泛应用于软件开发中。使用此函数前,必须包含Windows.h头文件,即#includeWindows.h。

函数定义:

BOOLSetConsoleTextAttribute(HANDLEhConsoleOutput,WORDwAttributes);

参数详解:

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。

#includestdio.h

#includestdlib.h

#includewindows.h

x的取值:

属性意义实际数值(十进制、十六进制、二进制)

FOREGROUND_BLUE前景色包含蓝色10x10000000000000001

FOREGROUND_GREEN前景色包含绿色20x20000000000000010

FOREGROUND_RED前景色包含红色40x40000000000000100

FOREGROUND_INTENSITY前景色加强80x80000000000001000

BACKGROUND_BLUE背景色包含蓝色160x100000000000010000

BACKGROUND_GREEN背景色包含绿色320x200000000000100000

BACKGROUND_RED背景色包含红色640x400000000001000000

BACKGROUND_INTENSITY背景色加强1280x800000000010000000

COMMON_LVB_LEADING_BYTE前导字节2560x1000000000100000000

COMMON_LVB_TRAILING_BYTE尾随字节5120x2000000001000000000

COMMON_LVB_GRID_HORIZONTAL顶部水平网格10240x4000000010000000000

COMMON_LVB_GRID_LVERTICAL左竖直网格20480x8000000100000000000

COMMON_LVB_GRID_RVERTICAL右竖直网格40960x10000001000000000000

COMMON_LVB_REVERSE_VIDEO前景和背景反转163840x40000100000000000000

COMMON_LVB_UNDERSCORE下划线327680x80001000000000000000

前景由x的二进制的前四位的值决定:

0001、0010、0100分别表示蓝、绿、红,而1000表示前景加强,于是前景颜色共有2^4=16种可能。

同理背景颜色是第5到8位

voidcolor(intx){

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);

intmain(){

printf("\n\n二进制颜色对照表:\n");

charstr[8];

for(inti=0;i256;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(inti=0;i256;i++){

color(i);

printf("%3d",i);

color(7);

printf("");

if((i+1)%16==0)

printf("\n");

printf("\n十六进制颜色对照表:\n");

for(inti=0;i256;i++){

color(i);

//color(i|COMMON_LVB_GRID_HORIZONTAL|COMMON_LVB_GRID_LVERTICAL|COMMON_LVB_GRID_RVERTICAL|COMMON_LVB_UNDERS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论