/// <summary>
/// 生成进度条
/// </summary>
/// <param name="graphics"></param>
/// <param name="brush"></param>
/// <param name="rect"></param>
/// <param name="radius"></param>
/// <param name="percentage"></param>
public static void ProcessBar(Graphics graphics, Brush brush, Rectangle rect, int radius, int percentage)
{
Pen pen = new Pen(new SolidBrush(Color.Gray));
#region 画外围边框
// 画左边半圆
graphics.DrawArc(pen, rect.X, rect.Y, radius * 2, radius * 2, 90, 180);
// 画下面线
graphics.DrawLine(pen,
new Point(rect.X + radius, rect.Y + radius * 2),
new Point(rect.X + rect.Width - radius, rect.Y + radius * 2));
// 画右边半圆
graphics.DrawArc(pen, rect.X + rect.Width - 2 * radius,
rect.Y, radius * 2, radius * 2,
-90, 180);
// 画上面线
graphics.DrawLine(pen,
new Point(rect.X + rect.Width - radius, rect.Y),
new Point(rect.X + radius, rect.Y));
#endregion
#region 画内部进度
if ((int)(rect.Width * percentage / 100) == 0)
return;
graphics.FillPath(brush, RoundRectangle(rect.X, rect.Y,
(int)(rect.Width * percentage / 100), 2 * radius, radius));
#endregion
}
C# GDI+ 生成自定义进度条
最新推荐文章于 2024-04-28 14:41:37 发布