自定义进度条控件,重绘系统控件(方案一)
public partial class CustomProgressBar : ProgressBar
{
public CustomProgressBar()
{
InitializeComponent();
this.SetStyle(ControlStyles.UserPaint, true);
}
protected override void OnPaint(PaintEventArgs pe)
{
this.ForeColor = Color.FromArgb(255 * this.Value / 100, 255 - 255 * this.Value / 100, 255);
var width = this.Value * this.Width / this.Maximum;
pe.Graphics.FillRectangle(new SolidBrush(this.ForeColor), 0, 0, width, this.Height);
base.OnPaint(pe);
}
}
自定义控件,重绘填充(方案二)
public class PgBarNew : ProgressBar
{
public PgBarNew()
{
SetStyle(ControlStyles.UserPaint, true);
}
//重写OnPaint方法
protected override void OnPaint(PaintEventArgs e)
{
SolidBrush brush = null;
SolidBrush brusht = null;
Rectangle bounds = new Rectangle(0, 0, Width, Height);
//e.Graphics.FillRectangle(new SolidBrush(this.BackColor), 1, 1, bounds.Width, bounds.Height);
bounds.Height -= 4;
bounds.Width = ((int)(bounds.Width * (Value / ((double)Maximum)))) - 4;
brush = new SolidBrush(Color.FromArgb(7, 192, 251));
e.Graphics.FillRectangle(brush, 2, 2, bounds.Width, bounds.Height);
if (Value== Maximum)
{
brusht = new SolidBrush(Color.LightGreen);
e.Graphics.FillRectangle(brusht, 2, 2, bounds.Width, bounds.Height);
}
}
}