1. 程式人生 > 其它 >C語言實現 帥氣 的進度條~

C語言實現 帥氣 的進度條~

技術標籤:實戰經驗實用功能c語言

將解決的問題

① 層疊覆蓋實現進度條
② 改變游標位置
③ 改變控制檯字型顏色(詳見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; }

執行結果:
在這裡插入圖片描述


星之所在,心之所向(寒冰小澈)