using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using MGdu.WinFormUI.MyGraphics;
namespace MGdu.WinFormUI
{
///
/// SimpleObject指的是只有一种状态(不像普通按钮一样有三种状态),并且其上的元素
/// 布局比较简单的Object
///
public class SimpleObjectPainter
{
///
///
///
///
///
///
///
///
///
///
///
///
///
public static void RenderCircleProgressBar(Graphics g, Rectangle rect, Color coveredColor, Color borderColor,
Color backColor, bool drawInnerBorder, int startAngle, float percentage, bool drawText, Font textFont)
{
using (NewSmoothModeGraphics ng = new NewSmoothModeGraphics(g, SmoothingMode.AntiAlias))
{
Rectangle backup = rect;
rect.Width--;
rect.Height--;
if (percentage < 0)
percentage = 0;
if (percentage > 360)
percentage = 360;
SolidBrush brushBack = new SolidBrush(backColor);
Pen penBorder = new Pen(borderColor);
// fill background
g.FillEllipse(brushBack, rect);
// outter most circle
g.DrawEllipse(penBorder, rect);
// pie covered region
rect.Inflate(-1, -1);
if (drawInnerBorder)
rect.Inflate(-1, -1);
using (SolidBrush sb = new SolidBrush(coveredColor))
{
g.FillPie(sb, rect, startAngle, 360 * percentage /100);
}
// inner circle background
rect = backup;
rect.Inflate(-rect.Width / 4, -rect.Width / 4);
g.FillEllipse(brushBack, rect);
// inner circle line
rect.Inflate(-1, -1);
if (drawInnerBorder)
rect.Inflate(-1, -1);
g.DrawEllipse(penBorder, rect);
// text
if (drawText)
{
string text = percentage.ToString() + "%";
TextRenderer.DrawText(g, text, textFont, backup, Color.Black,
TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter);
}
brushBack.Dispose();
penBorder.Dispose();
}
}
}
}