private void DrawBackground(Graphics g, System.Drawing.RectangleF rect, StyleInfo si)
{
LinearGradientBrush linGrBrush = null;
SolidBrush sb = null;
HatchBrush hb = null;
try
{
if (si.BackgroundGradientType != BackgroundGradientTypeEnum.None &&
!si.BackgroundGradientEndColor.IsEmpty &&
!si.BackgroundColor.IsEmpty)
{
Color c = si.BackgroundColor;
Color ec = si.BackgroundGradientEndColor;
switch (si.BackgroundGradientType)
{
case BackgroundGradientTypeEnum.LeftRight:
linGrBrush = new LinearGradientBrush(rect, c, ec, LinearGradientMode.Horizontal);
break;
case BackgroundGradientTypeEnum.TopBottom:
linGrBrush = new LinearGradientBrush(rect, c, ec, LinearGradientMode.Vertical);
break;
case BackgroundGradientTypeEnum.Center:
linGrBrush = new LinearGradientBrush(rect, c, ec, LinearGradientMode.Horizontal);
break;
case BackgroundGradientTypeEnum.DiagonalLeft:
linGrBrush = new LinearGradientBrush(rect, c, ec, LinearGradientMode.ForwardDiagonal);
break;
case BackgroundGradientTypeEnum.DiagonalRight:
linGrBrush = new LinearGradientBrush(rect, c, ec, LinearGradientMode.BackwardDiagonal);
break;
case BackgroundGradientTypeEnum.HorizontalCenter:
linGrBrush = new LinearGradientBrush(rect, c, ec, LinearGradientMode.Horizontal);
break;
case BackgroundGradientTypeEnum.VerticalCenter:
linGrBrush = new LinearGradientBrush(rect, c, ec, LinearGradientMode.Vertical);
break;
default:
break;
}
}
if (si.PatternType != patternTypeEnum.None)
{
switch (si.PatternType)
{
case patternTypeEnum.BackwardDiagonal:
hb = new HatchBrush(HatchStyle.BackwardDiagonal, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.CheckerBoard:
hb = new HatchBrush(HatchStyle.LargeCheckerBoard, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.Cross:
hb = new HatchBrush(HatchStyle.Cross, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.DarkDownwardDiagonal:
hb = new HatchBrush(HatchStyle.DarkDownwardDiagonal, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.DarkHorizontal:
hb = new HatchBrush(HatchStyle.DarkHorizontal, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.DiagonalBrick:
hb = new HatchBrush(HatchStyle.DiagonalBrick, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.HorizontalBrick:
hb = new HatchBrush(HatchStyle.HorizontalBrick, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.LargeConfetti:
hb = new HatchBrush(HatchStyle.LargeConfetti, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.OutlinedDiamond:
hb = new HatchBrush(HatchStyle.OutlinedDiamond, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.SmallConfetti:
hb = new HatchBrush(HatchStyle.SmallConfetti, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.SolidDiamond:
hb = new HatchBrush(HatchStyle.SolidDiamond, si.Color, si.BackgroundColor);
break;
case patternTypeEnum.Vertical:
hb = new HatchBrush(HatchStyle.Vertical, si.Color, si.BackgroundColor);
break;
}
}
if (linGrBrush != null)
{
g.FillRectangle(linGrBrush, rect);
linGrBrush.Dispose();
}
else if (hb != null)
{
g.FillRectangle(hb, rect);
hb.Dispose();
}
else if (!si.BackgroundColor.IsEmpty)
{
sb = new SolidBrush(si.BackgroundColor);
g.FillRectangle(sb, rect);
sb.Dispose();
}
}
finally
{
if (linGrBrush != null)
linGrBrush.Dispose();
if (sb != null)
sb.Dispose();
}
return;
}