赞
踩
① 层叠覆盖实现进度条
② 改变光标位置
③ 改变控制台字体颜色(详见C语言实现改变控制台字体颜色)
在开发程序时,通常有一些特殊的需求来满足美观的界面
这就需要各种类似控件的存在,进度条就是一种
进度条的实现方法很容易想到:不断绘制某一个固定的符号。
但单纯的符号绘制难免有些枯燥,这时候就需要颜色变换来帮忙啦~
帅气进度条Go: 使用不同颜色绘制进度条背景和进度条进度
(背景绘制完需要将光标指回绘制背景的起点,通过覆盖的方式绘制进度)
代码实现:
绘制进度条的各参数:
int x, int y 指定进度条的起始位置
int length 指定进度条的长度
short procolor 指定进度条的颜色
int progress 设置进度条的进度
int max 设置进度条的最大值
// (VS2019) #include <stdio.h> #include <windows.h> #include <conio.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); } //改变光标位置 void gotoxy(int x, int y) { // 更新光标位置 COORD pos; HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE); pos.X = x; pos.Y = y; SetConsoleCursorPosition(hOutput, pos); } //设置进度条 void setProgress(int x, int y, int lenth, short procolor, int progress, int max) { int pro = (progress * lenth) / max; gotoxy(x, y); color(8); for (int i = 0; i < lenth; i++) //打印进度条背景 { printf("█"); } gotoxy(x, y); color(procolor); for (int i = 0; i < pro; i++) //打印进度条进度 { printf("█"); } color(16); } int main() { setProgress(3, 3, 24, 6, 4, 10); gotoxy(4, 4); return 0; }
运行结果:
星之所在,心之所向(寒冰小澈)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。