C語言實現 帥氣 的進度條~
阿新 • • 發佈:2021-01-23
將解決的問題
① 層疊覆蓋實現進度條
② 改變游標位置
③ 改變控制檯字型顏色(詳見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;
}
執行結果:
星之所在,心之所向(寒冰小澈)