C# GDI+ 生成自定義進度條

/// <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
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章