C# ProgressBar 进度条显示百分比在进度条末端
时间: 2023-08-08 18:08:00 浏览: 279
如果想要在进度条末端显示百分比,可以通过自定义 ProgressBar 的绘制方式来实现。具体做法如下:
1. 在窗体上添加一个 ProgressBar 控件和一个 Label 控件,设置 ProgressBar 的 Style 属性为 ProgressBarStyle.Continuous,Label 控件用于显示进度百分比。
2. 在窗体的 Load 事件中添加以下代码:
```csharp
private void Form1_Load(object sender, EventArgs e)
{
// 设置 ProgressBar 的最大值和初始值
progressBar1.Maximum = 100;
progressBar1.Value = 0;
// 设置 ProgressBar 的 Style 为 Continuous
progressBar1.Style = ProgressBarStyle.Continuous;
}
```
3. 重写 ProgressBar 的 Paint 方法,绘制进度条末端的百分比。代码如下:
```csharp
private void progressBar1_Paint(object sender, PaintEventArgs e)
{
// 获取 ProgressBar 上下文
var g = e.Graphics;
// 获取 ProgressBar 客户区域
var rect = progressBar1.ClientRectangle;
// 计算进度条的宽度
var progressBarWidth = (int)(rect.Width * ((double)progressBar1.Value / progressBar1.Maximum));
// 绘制进度条
var progressBarRect = new Rectangle(rect.X, rect.Y, progressBarWidth, rect.Height);
g.FillRectangle(Brushes.Green, progressBarRect);
// 绘制进度百分比
var percent = (int)(((double)progressBar1.Value / progressBar1.Maximum) * 100);
var percentText = $"{percent}%";
var textSize = g.MeasureString(percentText, progressBar1.Font);
var textX = rect.X + progressBarWidth - (int)textSize.Width;
var textY = rect.Y + (rect.Height - (int)textSize.Height) / 2;
var textPoint = new PointF(textX, textY);
g.DrawString(percentText, progressBar1.Font, Brushes.White, textPoint);
}
```
在上面的代码中,我们首先获取 ProgressBar 的客户区域和当前进度条的宽度,然后绘制进度条。接着计算进度百分比并绘制在进度条末端。最后在窗体的 Load 事件中将 Paint 事件和 ProgressBar 控件关联即可。
这样就可以实现在进度条末端显示百分比的效果了。
阅读全文