c# 实现圆形的进度条(ProgressBar)

1. 简介

在开发Windows桌面应用程序时,经常需要使用进度条来显示任务的执行进度。默认的Windows进度条是矩形的,但有时我们可能需要一个圆形的进度条来提升用户体验。本文将介绍如何使用C#实现一个圆形的进度条。

2. 开发环境准备

在开始之前,我们需要准备好以下开发环境:

Visual Studio 2019或更高版本

.NET Framework 4.6.1或更高版本

3. 创建圆形进度条控件

首先,我们需要创建一个自定义的控件来实现圆形的进度条。在Visual Studio中,右键单击解决方案资源管理器中的项目,选择“添加” - “Windows窗体”。然后,给窗体命名为“CircularProgressBarForm”。

打开“CircularProgressBarForm.cs”文件,并在窗体的类中添加以下代码:

using System;

using System.Drawing;

using System.Windows.Forms;

public partial class CircularProgressBarForm : Form

{

private int progress;

public int Progress

{

get { return progress; }

set

{

progress = value;

Invalidate(); // 重新绘制控件

}

}

public CircularProgressBarForm()

{

InitializeComponent();

DoubleBuffered = true; // 开启双缓冲,防止闪烁

}

protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint(e);

float width = ClientSize.Width;

float height = ClientSize.Height;

float radius = Math.Min(width, height) / 2;

float startAngle = -90;

float sweepAngle = progress / 100f * 360f;

using (var brush = new SolidBrush(ForeColor))

{

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

e.Graphics.FillPie(brush, (width - radius) / 2, (height - radius) / 2, radius, radius, startAngle, sweepAngle);

}

}

}

4. 使用圆形进度条控件

接下来,我们将在Windows窗体应用程序中使用我们刚刚创建的圆形进度条控件。在窗体的设计视图中,拖动并放置一个“ProgressBar”控件和一个“Button”控件到窗体上。

双击“Button”控件,打开其点击事件的处理方法,并添加以下代码:

private void buttonStart_Click(object sender, EventArgs e)

{

var random = new Random();

int progress = 0;

while (progress <= 100)

{

progressBar.Progress = progress;

progress += random.Next(5, 20);

System.Threading.Thread.Sleep(500);

}

}

现在,我们需要将默认的“ProgressBar”控件替换为我们自定义的“CircularProgressBarForm”控件。在“Form1.cs”文件中添加以下代码:

private void Form1_Load(object sender, EventArgs e)

{

var circularProgressBar = new CircularProgressBarForm();

circularProgressBar.Dock = DockStyle.Fill;

Controls.Add(circularProgressBar);

}

最后,在程序中运行时,点击“Button”按钮,可以看到圆形进度条开始显示进度,并不断更新直到达到100%。

至此,我们成功地实现了一个圆形的进度条。

5. 总结

本文介绍了如何使用C#实现一个圆形的进度条。通过创建自定义控件,并在其中绘制圆形进度条的逻辑,我们实现了一个简单而实用的控件,为用户的任务执行提供了一个美观的进度展示。

您可以根据自己的需求,继续扩展该控件的功能,例如添加动画效果、调整外观样式等等。

希望本文能帮助到您,祝您编码愉快!

后端开发标签