c#进度条刻度_在ProgressBar上加文字----显示百分比的进度条

本文介绍了如何在C#中创建一个自定义的ProgressBar,该进度条不仅显示进度条,还会在上面加上文字以显示百分比。通过继承ProgressBar并重写onDraw()方法,实现在进度条上绘制文字,从而提供更直观的进度反馈。示例代码展示了如何在布局文件中使用自定义组件,并提供了按钮点击触发进度更新的示例。
摘要由CSDN通过智能技术生成

一般的ProgressBar都只是一个光光的条(这里说的都是水平进度条),虽然比不用进度条时给用户的感觉要好,但是如果在形像化的东西上面再加上点文字,将进度描述量化,就可以让用户更加明白当前进度是多少了。

有了需求,就可以开始实现了。

这里的原理就是继承一个ProgressBar,然后重写里面的onDraw()方法。

不多说,直接上码。(下面代码中的 package hol.test;,import就不写了)

public class MyProgress extends ProgressBar{

String text;

Paint mPaint;

public MyProgress(Context context) {

super(context);

// TODO Auto-generated constructor stub

System.out.println("1");

initText();

}

public MyProgress(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

// TODO Auto-generated constructor stub

System.out.println("2");

initText();

}

public MyProgress(Context context, AttributeSet attrs) {

super(context, attrs);

<
如果想要在进度条末端显示百分比,可以通过自定义 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 控件关联即可。 这样就可以实现在进度条末端显示百分比的效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值