默认的进度条都是水平方向的,有时需要用到垂直进度条,这时可以通过重绘进度条的OnPaint方法来实现,其中用到ProgressBarRenderer类的DrawVerticalBar方法,该方法可以绘制一个空的垂直进度条
主要代码如下
public class VerticalProgressBar : ProgressBar
{
public VerticalProgressBar()
{
this.SetStyle(ControlStyles.UserPaint, true);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Rectangle rect = new Rectangle(base.ClientRectangle.Location, new Size(base.Width, base.Height));
ProgressBarRenderer.DrawVerticalBar(e.Graphics, rect);
LinearGradientBrush lb = new LinearGradientBrush(new Rectangle(base.ClientRectangle.X, base.ClientRectangle.Y + base.ClientRectangle.Height - base.Height * base.Value / base.Maximum, base.Width, base.Height * base.Value / base.Maximum + 1), Color.White, Color.Red, 0F);
e.Graphics.FillRectangle(lb, new Rectangle(base.ClientRectangle.X, base.ClientRectangle.Y + base.ClientRectangle.Height - base.Height * base.Value / 100, base.Width, base.Height * base.Value / base.Maximum));
}
}
编译执行后,可以在工具箱中找到我们自定义的VerticalProgressBar,拖到Form中即可使用
执行效果如下图