/// <summary> /// Draws a filled polygon. /// </summary> /// <param name="primitives"></param> /// <param name="color"></param> /// <param name="polygon"></param> public static void FillPolygon(this IPrimitiveRenderer primitives, Effect effect, Color color, Polygon polygon) { if (polygon.IsConvex) { primitives.FillPolygon(effect, color, polygon.Points); } else { foreach (var convexPoly in polygon.ConvexDecomposition) { primitives.FillPolygon(effect, color, convexPoly.Points); } } }
/// <summary> /// Draws a filled circle. /// </summary> /// <param name="primitives"></param> /// <param name="color"></param> /// <param name="center"></param> /// <param name="radius"></param> public static void FillCircle(this IPrimitiveRenderer primitives, Effect effect, Color color, Vector2 center, double radius) { primitives.FillPolygon(effect, color, new EllipseBuilder().BuildCircle(center, radius).ToArray()); }
/// <summary> /// Draws a filled ellipse. /// </summary> /// <param name="primitives"></param> /// <param name="color"></param> /// <param name="center"></param> /// <param name="majorAxisRadius"></param> /// <param name="minorAxisRadius"></param> /// <param name="rotationAngle"></param> public static void FillEllipse(this IPrimitiveRenderer primitives, Effect effect, Color color, Vector2 center, double majorAxisRadius, double minorAxisRadius, double rotationAngle) { primitives.FillPolygon(effect, color, new EllipseBuilder().BuildEllipse(center, majorAxisRadius, minorAxisRadius, rotationAngle).ToArray()); }
/// <summary> /// Draws a filled ellipse, inscribed inside a rectangle. /// </summary> /// <param name="primitives"></param> /// <param name="color"></param> /// <param name="boundingRect"></param> public static void FillEllipse(this IPrimitiveRenderer primitives, Effect effect, Color color, RectangleF boundingRect) { primitives.FillPolygon(effect, color, new EllipseBuilder().BuildEllipse(boundingRect).ToArray()); }
/// <summary> /// Draws a filled rectangle. /// </summary> /// <param name="primitives"></param> /// <param name="color"></param> /// <param name="rect"></param> public static void FillRect(this IPrimitiveRenderer primitives, Effect effect, Color color, RectangleF rect) { primitives.FillPolygon(effect, color, new QuadrilateralBuilder().BuildRectangle(rect)); }