protected override Size ArrangeOverride(Size finalSize) { var circle = new Circle(finalSize); circle.Radius -= StrokeThickness / 2; ArrangeEllipse(circle); return finalSize; }
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()); }
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); }
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); }
private void ArrangeEllipse(Circle circle) { ellipse.Center = circle.Center; ellipse.RadiusX = circle.Radius; ellipse.RadiusY = circle.Radius; }
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); }