[C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法

【创建圆形进度条流程】

在C# WinForms应用程序中创建一个圆形进度条(通常用作仪表盘的显示)可以通过多种方式实现。下面是一个简单的例子,演示如何使用System.Drawing命名空间中的图形绘制功能来绘制一个基本的圆形进度条。

首先,在你的WinForms项目中添加一个Panel控件作为进度条的容器。然后,可以通过重写Panel的OnPaint事件来处理绘图逻辑。

以下是一个简单的圆形进度条控件的示例代码:

csharp

using System;

using System.Drawing;

using System.Windows.Forms;

public class CircularProgressBar : Panel

{

private int _progress;

public CircularProgressBar()

{

this.DoubleBuffered = true; // 双缓冲以减少闪烁

this.SetStyle(ControlStyles.ResizeRedraw | ControlStyles.OptimizedDoubleBuffer, true);

}

public int Progress

{

get { return _progress; }

set

{

if (value < 0) value = 0;

if (value > 100) value = 100;

_progress = value;

Invalidate(); // 触发重绘

}

}

protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint(e);

int diameter = Math.Min(Width, Height) - 1; // 直径等于宽度和高度的最小值减一

int radius = diameter / 2; // 半径等于直径的一半

int centerX = Width / 2; // 圆心X坐标

int centerY = Height / 2; // 圆心Y坐标

// 绘制进度条背景

using (Pen backgroundPen = new Pen(Color.LightGray, 10))

{

e.Graphics.DrawEllipse(backgroundPen, centerX - radius, centerY - radius, diameter, diameter);

}

// 绘制进度

int sweepAngle = 360 * Progress / 100; // 计算扫过的角度

using (Pen progressPen = new Pen(Color.Blue, 10))

{

e.Graphics.DrawArc(progressPen, centerX - radius, centerY - radius, diameter, diameter, -90, sweepAngle);

}

// 绘制进度文本(可选)

using (Font textFont = new Font("Arial", 12, FontStyle.Bold))

using (Brush textBrush = new SolidBrush(Color.Black))

{

string text = Progress + "%";

e.Graphics.DrawString(text, textFont, textBrush, centerX - e.Graphics.MeasureString(text, textFont).Width / 2, centerY - e.Graphics.MeasureString(text, textFont).Height / 2);

}

}

}

然后,你可以在你的WinForms窗体上实例化并使用这个CircularProgressBar控件:

csharp

public partial class MainForm : Form

{

private CircularProgressBar circularProgressBar;

public MainForm()

{

InitializeComponent();

circularProgressBar = new CircularProgressBar();

circularProgressBar.Dock = DockStyle.Fill;

circularProgressBar.Progress = 50; // 设置初始进度为50%

this.Controls.Add(circularProgressBar);

// 你可以通过定时器或其他方式来动态改变进度

// 例如:

// System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

// timer.Interval = 1000; // 1秒

// timer.Tick += (sender, e) => {

// circularProgressBar.Progress = (circularProgressBar.Progress + 1) % 100;

// };

// timer.Start();

}

}

请注意,这只是一个简单的示例,你可以根据自己的需求调整样式、颜色、字体等属性,甚至添加动画效果。如果你需要更复杂的仪表盘控件,可能需要考虑使用第三方库或自定义绘制更复杂的图形元素。

【圆形进度条控件】

圆形进度条控件制作是是否考验自己编程能力如果有开源免费的圆形进度条就很好了,偶然发现一个好用圆形进度条控件,支持圆形、圆环等指定圆形进度条创建,使用十分简单就跟C#里面trackbar使用方法一样,只是简单调用即可。效果如下:

【测试环境】

vs2019,netframwork4.7.2

【源码演示下载地址】

https://download.csdn.net/download/FL1623863129/88824751

相关推荐
mudtools13 小时前
.NET驾驭Word之力:玩转文本与格式
c#·.net
唐青枫17 小时前
C#.NET 数据库开发提速秘籍:SqlSugar 实战详解
c#·.net
mudtools1 天前
.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)
c#·.net
侃侃_天下2 天前
最终的信号类
开发语言·c++·算法
echoarts2 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix2 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
大飞pkz2 天前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
每天回答3个问题2 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说2 天前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔2 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机