翼度科技»论坛 云主机 LINUX 查看内容

Linux环境下非GUI制作图形界面方法

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
Linux环境下非GUI制作图形界面方法

如题,即就是仅仅使用ANSI转义字符实现Linux环境的页面效果,如字体颜色、背景颜色、高亮、固定位置光标、将光标放到指定位置、隐藏字符串等等。
具体实现方法在如下代码中,使用方法在注释里可以看到。
//
  1. #ifndef __PRINT_H__
  2. #define __PRINT_H__
  3. #include<stdio.h>
  4. /**
  5. * Readme: This Header file is used for set special display characters of screen such as
  6. * background color and Font color etc.
  7. */
  8. /*
  9.   颜色代码: QUOTE:
  10.   字背景颜色范围: 40--49                   字颜色: 30—39
  11. 40: 黑                           30: 黑
  12. 41: 红                           31: 红
  13. 42: 绿                           32: 绿
  14. 43: 黄                           33: 黄
  15. 44: 蓝                           34: 蓝
  16. 45: 紫                           35: 紫
  17. 46: 深绿                         36: 深绿
  18. 47: 白色                         37: 白色
  19. ANSI控制码:
  20. QUOTE:
  21. \033[0m 关闭所有属性
  22. \033[1m 设置高亮度
  23. \033[4m 下划线
  24. \033[5m 闪烁
  25. \033[7m 反显
  26. \033[8m 消隐
  27. \033[30m -- \033[37m 设置前景色
  28. \033[40m -- \033[47m 设置背景色
  29. \033[nA 光标上移n行
  30. \033[nB 光标下移n行
  31. \033[nC 光标右移n行,从0开始就是移动第一个字符。 eg:printf("\033[0CHello World!----\n");
  32. \033[nD 光标左移n行,从0开始就是移动第一个字符。
  33. \033[y;xH设置光标位置
  34. \033[2J 清屏
  35. \033[K 清除从光标到行尾的内容
  36. \033[s 保存光标位置
  37. \033[u 恢复光标位置
  38. \033[?25l 隐藏光标
  39. \033[?25h 显示光标
  40. * */
  41. /* 用法:以清屏功能举例,printf("%sHaha\n",CLRSCREEN); 或 printf(CLRSCREEN "Haha\n"); 均可 */
  42. //以下设置字体颜色
  43. #define BLACK                "\e[0;30m"    //黑色
  44. #define L_BLACK              "\e[1;30m"    //亮暗黑
  45. #define RED                  "\e[0;31m"    //红色
  46. #define L_RED                "\e[1;31m"    //亮红
  47. #define GREEN                "\e[0;32m"    //绿色
  48. #define L_GREEN              "\e[1;32m"    //亮绿
  49. #define BROWN                "\e[0;33m"    //棕色
  50. #define YELLOW               "\e[1;33m"    //黄色
  51. #define BLUE                 "\e[0;34m"    //蓝色
  52. #define L_BLUE               "\e[1;34m"    //亮蓝
  53. #define PURPLE               "\e[0;35m"    //紫色
  54. #define L_PURPLE             "\e[1;35m"    //亮紫
  55. #define CYAN                 "\e[0;36m"    //青色
  56. #define L_CYAN               "\e[1;36m"    //亮青
  57. #define GRAY                 "\e[0;37m"    //灰色
  58. #define WHITE                "\e[1;37m"    //亮白色
  59. //以下设置背景色
  60. #define B_BLACK                "\e[0;40m"   //背景黑色
  61. #define B_RED                  "\e[0;41m"   //背景红色
  62. #define B_GREEN                "\e[0;42m"   //背景绿色
  63. #define B_BROWN                "\e[0;43m"   //背景棕色
  64. #define B_YELLOW               "\e[1;43m"   //背景黄色
  65. #define B_BLUE                 "\e[0;44m"   //背景蓝色
  66. #define B_PURPLE               "\e[0;45m"   //背景紫色
  67. #define B_CYAN                 "\e[0;46m"   //背景青色
  68. #define B_GRAY                 "\e[0;47m"   //背景灰色
  69. #define B_WHITE                "\e[1;47m"   //背景白色
  70. //以下设置属性
  71. #define NONE                 "\e[0m"      //关闭所有属性
  72. #define BOLD                 "\e[1m"      //加粗
  73. #define UNDERLINE            "\e[4m"      //下划线
  74. #define BLINK                "\e[5m"      //闪烁
  75. #define REVERSE              "\e[7m"      //反显
  76. #define HIDE                 "\e[8m"      //消隐
  77. #define CLEAR                "\e[2J"      //清屏
  78. #define CLRLINE              "\r\e[K"     //清除从光标到行尾的内容
  79. #define rdgn                 "\e[1;0;33;1m"    //加粗+关闭所有属性+棕色+加粗。[从该行开始文字加粗加棕色]
  80. /*
  81. * rdgn功能不必这么使用。可以直接例如:printf(BOLD NONE BROWN BOLD "Hello_World!\n");这样简单明了
  82. * 也可以这样写简单一点:printf(BROWN BOLD "Hello_World!\n"); 也就是先写颜色再写加粗。
  83. * ------------------------------------分------割------线------------------------------------
  84. * 在大多数编程和脚本环境中,\e 并不是一个标准的转义序列来表示 "Escape" 字符(ASCII 27).
  85. * \033 是一个标准的八进制转义序列
  86. * 区别就是这些。用哪个看你。
  87. */
  88. #define CLR_LINE        "\033[k"      //清除从光标到行尾的内容
  89. #define CLR_SCREEN      "\033[2J"     //清屏
  90. #define POS(x,y)        "\033["#y";"#x"H"  //设置xyy位置
  91. #define TWINKLE         "\033[5m"     //闪烁
  92. #define CURSOR_HIDE     "\033[?25l"   //隐藏光标
  93. #define CURSOR_SHOW     "\033[?25h"   //显示光标
  94. #define CURSOR_UP(n)    "\033["#n"A"  //光标上移
  95. #define CURSOR_DOWN(n)  "\033["#n"B"  //光标下移
  96. #define CURSOR_RIGHT(n) "\033["#n"C"  //光标右移
  97. #define CURSOR_LEFT(n)  "\033["#n"D"  //光标左移
  98. #define CURSOR_SAVE     "\033[s"      //保存光标位置
  99. #define CUUSOR_RESTORE  "\033[u"      //恢复光标位置
  100. /**
  101. * @brief :清空一定范围的矩形区域
  102. * @param row:行号
  103. * @param start_col:起始列号
  104. * @param end_col:终止列号
  105. */
  106. #define CLEAR_RANGE(row, start_col, end_col) printf("\033[%d;%dH\033[K", row, start_col)
  107. #endif
复制代码
//

来源:https://www.cnblogs.com/salty-pineapple/p/18011278
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具