目标
思路过程
想要实现以上效果,需要先设置背景颜色,主要使用的函数有circle和arc两个函数,通过setlinestyle函数设置线宽和setlinecolor设置线的颜色。然后通过for循环来控制进度环的弧度,总体来说比较简单。
源码
///////////////////////////////////////////////////
// 程序名称:绘制进度环
// 编译环境:Mictosoft Visual Studio 2013, EasyX_20200315(beta)
// 作 者:luoyh <2864292458@qq.com>
// 公 众 号:C语言研究
// 最后修改:2024-9-13
//
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);
}
最终效果