public static ShapeDescription DrawFullRectangle(Vector3 position, Size size, IGradientShader linearShader, Color4 fillColor, Thickness borderSize, BorderStyle borderStyle, Color4 borderColor) { Color4[] shadedColors = linearShader.Method(linearShader, 4,Shape.Rectangle); Color4[] borderColors; switch (borderStyle) { case BorderStyle.None: borderColors = LinearShader.FillColorArray(new Color4(0), 4); break; case BorderStyle.Flat: borderColors = LinearShader.FillColorArray(borderColor, 4); break; case BorderStyle.Raised: borderColors = LinearShader.BorderRaised(borderColor, 4); break; case BorderStyle.Sunken: borderColors = LinearShader.BorderSunken(borderColor, 4); break; default: throw new ArgumentOutOfRangeException("borderStyle"); } ShapeDescription inside = DrawRectangle(position, size, shadedColors); ShapeDescription outline = DrawRectangularOutline(position, size, borderSize.All, borderColors, borderStyle, Borders.All); ShapeDescription result = ShapeDescription.Join(inside, outline); result.Shape = Shape.RectangleWithOutline; return result; }