private static void CreateBorderBackPathOnly(PaletteDrawBorders borders,
GraphicsPath borderPath,
Rectangle rect,
int variant)
{
// Reduce the width and height by 1 pixel for drawing into rectangle
rect.Width -= 1;
rect.Height -= 1;
// Add only the border for drawing
switch (borders)
{
case PaletteDrawBorders.None:
break;
case PaletteDrawBorders.Top:
borderPath.AddLine(rect.Left - 1, rect.Top, rect.Right + 1, rect.Top);
break;
case PaletteDrawBorders.Bottom:
borderPath.AddLine(rect.Left - 1, rect.Bottom, rect.Right + 1, rect.Bottom);
break;
case PaletteDrawBorders.Left:
borderPath.AddLine(rect.Left, rect.Top - 1, rect.Left, rect.Bottom + 1);
break;
case PaletteDrawBorders.Right:
borderPath.AddLine(rect.Right, rect.Top - 1, rect.Right, rect.Bottom + 1);
break;
case PaletteDrawBorders.TopBottom:
if (variant == 0)
borderPath.AddLine(rect.Left - 1, rect.Top, rect.Right + 1, rect.Top);
else
borderPath.AddLine(rect.Left - 1, rect.Bottom, rect.Right + 1, rect.Bottom);
break;
case PaletteDrawBorders.LeftRight:
if (variant == 0)
borderPath.AddLine(rect.Left, rect.Top - 1, rect.Left, rect.Bottom + 1);
else
borderPath.AddLine(rect.Right, rect.Top - 1, rect.Right, rect.Bottom + 1);
break;
case PaletteDrawBorders.TopLeft:
borderPath.AddLine(rect.Left, rect.Bottom + 1, rect.Left, rect.Top);
borderPath.AddLine(rect.Left, rect.Top, rect.Right + 1, rect.Top);
break;
case PaletteDrawBorders.TopRight:
borderPath.AddLine(rect.Left, rect.Top, rect.Right, rect.Top);
borderPath.AddLine(rect.Right, rect.Top, rect.Right, rect.Bottom + 1);
break;
case PaletteDrawBorders.BottomRight:
borderPath.AddLine(rect.Right, rect.Top - 1, rect.Right, rect.Bottom);
borderPath.AddLine(rect.Right, rect.Bottom, rect.Left - 1, rect.Bottom);
break;
case PaletteDrawBorders.BottomLeft:
borderPath.AddLine(rect.Right + 1, rect.Bottom, rect.Left, rect.Bottom);
borderPath.AddLine(rect.Left, rect.Bottom, rect.Left, rect.Top - 1);
break;
case PaletteDrawBorders.TopBottomLeft:
borderPath.AddLine(rect.Right + 1, rect.Bottom, rect.Left, rect.Bottom);
borderPath.AddLine(rect.Left, rect.Bottom, rect.Left, rect.Top);
borderPath.AddLine(rect.Left, rect.Top, rect.Right + 1, rect.Top);
break;
case PaletteDrawBorders.TopBottomRight:
borderPath.AddLine(rect.Left - 1, rect.Top, rect.Right, rect.Top);
borderPath.AddLine(rect.Right, rect.Top, rect.Right, rect.Bottom);
borderPath.AddLine(rect.Right, rect.Bottom, rect.Left - 1, rect.Bottom);
break;
case PaletteDrawBorders.TopLeftRight:
borderPath.AddLine(rect.Left, rect.Bottom + 1, rect.Left, rect.Top);
borderPath.AddLine(rect.Left, rect.Top, rect.Right, rect.Top);
borderPath.AddLine(rect.Right, rect.Top, rect.Right, rect.Bottom + 1);
break;
case PaletteDrawBorders.BottomLeftRight:
borderPath.AddLine(rect.Right, rect.Top - 1, rect.Right, rect.Bottom);
borderPath.AddLine(rect.Right, rect.Bottom, rect.Left, rect.Bottom);
borderPath.AddLine(rect.Left, rect.Bottom, rect.Left, rect.Top - 1);
break;
}
}