Ejemplo n.º 1
0
        protected override Size ArrangeOverride(Size finalSize)
        {
            var circle = new Circle(finalSize);
            circle.Radius -= StrokeThickness / 2;

            ArrangeEllipse(circle);
            return finalSize;
        }
Ejemplo n.º 2
0
        public void SizeTest()
        {
            // Normal case
            var circle = new Circle(new Size(3.0, 2.0));
            Assert.AreEqual(new Size(1.0, 1.0), circle.Size());

            // Extreme case (Inf)
            var infiniteCircle = new Circle(new Size(Double.PositiveInfinity, 0));
            Assert.AreEqual(new Size(0, 0), infiniteCircle.Size());

            // Extreme case (NaN)
            var nanCircle = new Circle(new Size(Double.NaN, 1));
            Assert.AreEqual(new Size(Double.NaN, Double.NaN), nanCircle.Size());
        }
Ejemplo n.º 3
0
        public void PointAtTest()
        {
            // Normal cases
            var circle = new Circle(new Size(10.0, 2.0))
            {
                Center = new Point(1, 1)
            };

            Assert.AreEqual(new Point(1, 0), circle.PointAt(0));
            Assert.AreEqual(new Point(0, 1), circle.PointAt(270));
            Assert.AreEqual(new Point(2, 1), circle.PointAt(-270));

            // Extreme case (Inf)
            var infPoint = circle.PointAt(Double.PositiveInfinity);
            Assert.AreEqual(Double.NaN, infPoint.X);
            Assert.AreEqual(Double.NaN, infPoint.Y);

            // Extreme case (NaN)
            var nanPoint = circle.PointAt(Double.PositiveInfinity);
            Assert.AreEqual(Double.NaN, nanPoint.X);
            Assert.AreEqual(Double.NaN, nanPoint.Y);
        }
Ejemplo n.º 4
0
        private void ArrangePath(Circle circle)
        {
            var tension = Tension % 1;
            var angle = Angle + Offset;

            var startAngle = angle - tension * Spread;
            var endAngle = angle + (1 - tension) * Spread;

            figure.StartPoint = circle.PointAt(startAngle);
            segment.Point = circle.PointAt(endAngle);

            segment.Size = circle.Size();
            segment.IsLargeArc = (Spread > 180);
        }
Ejemplo n.º 5
0
 private void ArrangeEllipse(Circle circle)
 {
     ellipse.Center = circle.Center;
     ellipse.RadiusX = circle.Radius;
     ellipse.RadiusY = circle.Radius;
 }
Ejemplo n.º 6
0
        private void ArrangePath(Circle circle)
        {
            arcFigure.StartPoint = circle.Center;

            sliceStart.Point = circle.PointAt(Angle + Offset);
            sliceEnd.Point = circle.Center;

            arcSegment.Point = circle.PointAt(Angle + Offset + Spread);

            arcSegment.Size = circle.Size();
            arcSegment.IsLargeArc = (Spread > 180);
        }