颜色

 

 

 1 /*
 2 颜色函数SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),前景色 | 背景色 | 前景加强 | 背景加强);
 3     前景色:数字0-15 或 FOREGROUND_XXX 表示    (其中XXX可用BLUE、RED、GREEN表示) 
 4     前景加强:数字8 或 FOREGROUND_INTENSITY 表示
 5     背景色:数字16 32 64 或 BACKGROUND_XXX蓝,绿,红三种颜色表示 
 6     背景加强: 数字128 或 BACKGROUND_INTENSITY 表示
 7 主要应用:改变指定区域字体与背景的颜色
 8 前景颜色对应值: 
 9   0=黑色                8=灰色  
10    1=蓝色                9=淡蓝色        十六进制                                  
11   2=绿色                10=淡绿色       0xa          
12   3=湖蓝色              11=淡浅绿色     0xb 
13   4=红色                12=淡红色       0xc  
14   5=紫色                13=淡紫色       0xd          
15   6=黄色                14=淡黄色       0xe          
16   7=白色                15=亮白色       0xf 
17   也可以把这些值设置成常量。
18 */
19 #include <stdio.h>
20 #include <windows.h>
21 using namespace std;
22 void color(short x)    //自定义函根据参数改变颜色 
23 {
24     if(x>=0 && x<=15)//参数在0-15的范围颜色
25         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);    //只有一个参数,改变字体颜色 
26     else//默认的颜色白色
27         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
28 }
29 int main()
30 {       
31     printf("此处为没调用颜色函数之前默认的颜色\n");
32     //调用自定义color(x)函数 改变的颜色
33     color(0);    printf("黑色0\n");
34     color(1);     printf("蓝色1\n");
35     color(2);     printf("绿色2\n"); 
36     color(3);     printf("湖蓝色3\n");
37     color(4);      printf("红色4\n");
38     color(5);      printf("紫色5\n");
39     color(6);     printf("黄色6\n"); 
40     color(7);      printf("白色7\n");
41     color(8);      printf("灰色8\n");
42     color(9);     printf("淡蓝色9\n");
43     color(10);     printf("淡绿色10\n");
44     color(11);     printf("淡浅绿色11\n"); 
45     color(12);  printf("淡红色12\n");
46     color(13);     printf("淡紫色13\n");
47     color(14);     printf("淡黄色14\n");
48     color(15);     printf("亮白色15\n");
49     color(16);    //因为这里大于15,恢复默认的颜色 
50     printf("回到原来颜色\n");
51     //直接使用颜色函数
52     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),13 | 8 | 128| 32);
53     printf("红色字体   前景加强 绿色背景 背景加强\n"); 
54     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15 | 8 | 128 | 64);
55     printf("亮白色字体 前景加强 红色背景 背景加强\n"); 
56     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15 | 8 | 128 | 32);
57     printf("亮白色字体 前景加强 红色背景 背景加强\n"); 
58     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15 | 8 | 128 | 64);
59     printf("亮白色字体 前景加强 红色背景 背景加强\n"); 
60     
61     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12 | 8 | 16 | 32 | 64);
62     printf("亮白色字体 前景加强 红色背景 背景加强\n");
63     //声明句柄再调用函数 
64     HANDLE JB = GetStdHandle(STD_OUTPUT_HANDLE);//创建并实例化句柄 
65     SetConsoleTextAttribute(JB, 2 | 8);
66     printf("颜色及对应数字表:\n");
67     for(int i = 0;i < 10;i ++){
68         //color(16);printf(" "); 
69         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);
70         printf("%-3d", i);
71         color(16);printf(" "); 
72         if(i % 16 == 0)    printf("\n");
73     }
74     color(16);
75     system("pause");
76     return 0;
77     //类似的函数还有system("color XX");(X是十六进制0~F之间的数,不过这种函数改变的是整个画面,而不能让多处局部变色;
78 }
79  

 

posted on 2020-02-05 10:44  yg02  阅读(187)  评论(0编辑  收藏  举报