private static void DrawGradientBack(Graphics g,
Rectangle backRect,
GradientItemColors colors)
{
// Reduce rect draw drawing inside the border
backRect.Inflate(-1, -1);
int y2 = backRect.Height / 2;
Rectangle backRect1 = new Rectangle(backRect.X, backRect.Y, backRect.Width, y2);
Rectangle backRect2 = new Rectangle(backRect.X, backRect.Y + y2, backRect.Width, backRect.Height - y2);
Rectangle backRect1I = backRect1;
Rectangle backRect2I = backRect2;
backRect1I.Inflate(1, 1);
backRect2I.Inflate(1, 1);
using (LinearGradientBrush insideBrush1 = new LinearGradientBrush(backRect1I, colors.InsideTop1, colors.InsideTop2, 90f),
insideBrush2 = new LinearGradientBrush(backRect2I, colors.InsideBottom1, colors.InsideBottom2, 90f))
{
g.FillRectangle(insideBrush1, backRect1);
g.FillRectangle(insideBrush2, backRect2);
}
y2 = backRect.Height / 2;
backRect1 = new Rectangle(backRect.X, backRect.Y, backRect.Width, y2);
backRect2 = new Rectangle(backRect.X, backRect.Y + y2, backRect.Width, backRect.Height - y2);
backRect1I = backRect1;
backRect2I = backRect2;
backRect1I.Inflate(1, 1);
backRect2I.Inflate(1, 1);
using (LinearGradientBrush fillBrush1 = new LinearGradientBrush(backRect1I, colors.FillTop1, colors.FillTop2, 90f),
fillBrush2 = new LinearGradientBrush(backRect2I, colors.FillBottom1, colors.FillBottom2, 90f))
{
// Reduce rect one more time for the innermost drawing
backRect.Inflate(-1, -1);
y2 = backRect.Height / 2;
backRect1 = new Rectangle(backRect.X, backRect.Y, backRect.Width, y2);
backRect2 = new Rectangle(backRect.X, backRect.Y + y2, backRect.Width, backRect.Height - y2);
g.FillRectangle(fillBrush1, backRect1);
g.FillRectangle(fillBrush2, backRect2);
}
}