示例#1
0
        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));
        }