public override void DrawEllipse(Brush brush, Pen pen, Point center, double radiusX, double radiusY) { Debug.Assert(brush != null || pen != null); Debug.Assert(radiusX >= 0 && radiusY >= 0); if (!EnsureDrawCommand()) { return; } var curve = new EllipseCurve(center.X, center.Y, radiusX, radiusY, 0, Math.PI * 2, true, 0); var count = (int)((radiusX + radiusY)); var unit = 1.0 / count; IList <Point> points = new List <Point>(count); for (int i = 0; i < count; i++) { var p = curve.getPoint(unit * i); points.Add(p); } if (pen != null) { this.AddPolyline(points, pen.LineColor, true, pen.LineWidth); } if (brush != null) { this.AddConvexPolyFilled(points, brush.FillColor, false); } }
public void GetCircleCurveCorrectPoint() { var ellipseCurve = new EllipseCurve(new Vector2(5, 10)); var angle = 0.643501108793284; var point = ellipseCurve.GetPoint(angle); Assert.AreEqual(new Vector2(4, 6), ellipseCurve.GetPoint(angle)); }