C语言绘制动态进度环

教育   2024-09-13 21:59   宁夏  

目标

思路过程

想要实现以上效果,需要先设置背景颜色,主要使用的函数有circle和arc两个函数,通过setlinestyle函数设置线宽和setlinecolor设置线的颜色。然后通过for循环来控制进度环的弧度,总体来说比较简单。

源码

///////////////////////////////////////////////////// 程序名称:绘制进度环// 编译环境:Mictosoft Visual Studio 2013, EasyX_20200315(beta)// 作  者:luoyh <2864292458@qq.com>// 公 众 号:C语言研究// 最后修改:2024-9-13//
#include<graphics.h>#include<conio.h>#include<math.h>#define PI acos(-1.0) // 圆周率
void DrawHuan(COLORREF big, COLORREF mid, COLORREF sm); // 绘制环
int main(){ initgraph(640, 360); setbkcolor(RGB(3, 16, 50)); // 设置背景颜色 cleardevice(); DrawHuan(RGB(21, 32, 62), RGB(53, 65, 91), RGB(12, 23, 51)); settextcolor(RGB(129, 142, 174)); RECT r = { 245,94,402, 241 }; settextstyle(40, 0, _T("微软雅黑")); drawtext(_T("0%"), &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE); TCHAR str[25]; double X = 2 * PI / 100; _getch(); BeginBatchDraw(); for (int i = 0; i <= 100; i++) { settextcolor(RGB(222, 233, 255)); _stprintf_s(str, _T("%d%%"), i); DrawHuan(RGB(29, 43, 69), RGB(37, 95, 116), RGB(18, 30, 56)); drawtext(str, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE); // 开始绘制圆弧 setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 9); setlinecolor(RGB(42, 100, 244)); arc(242, 92, 398, 248, PI / 2 - X * i, PI / 2); setlinecolor(RGB(82, 129, 245)); arc(250, 100, 390, 240, PI / 2 - X * i, PI / 2); setlinecolor(RGB(30, 77, 215)); arc(258, 108, 382, 232, PI / 2 - X * i, PI / 2); Sleep(50); FlushBatchDraw(); cleardevice(); } _getch(); EndBatchDraw(); return 0;}
void DrawHuan(COLORREF big, COLORREF mid, COLORREF sm){  setlinestyle(PS_SOLID, 9);     // 设置线宽  setlinecolor(big);             // 设置线的颜色 circle(320, 170, 78); // 圆心320,170,半径80 setlinecolor(mid); circle(320, 170, 70); setlinecolor(sm); circle(320, 170, 62);}

最终效果

C语言研究
写给自己的笔记,时常写写,时常看看,仅此而已。