Пример #1
0
    private static PathSegment Copy(PathSegment s) {
      if (s == null) return null;

      LineSegment ls = s as LineSegment;
      if (ls != null) {
        return new LineSegment() { Point = ls.Point };
      }
      BezierSegment bs = s as BezierSegment;
      if (bs != null) {
        return new BezierSegment() { Point1 = bs.Point1, Point2 = bs.Point2, Point3 = bs.Point3 };
      }
      QuadraticBezierSegment qbs = s as QuadraticBezierSegment;
      if (qbs != null) {
        return new QuadraticBezierSegment() { Point1 = qbs.Point1, Point2 = qbs.Point2 };
      }
      ArcSegment arc = s as ArcSegment;
      if (arc != null) {
        return new ArcSegment() { Point = arc.Point, Size = arc.Size, SweepDirection = arc.SweepDirection, IsLargeArc = arc.IsLargeArc, RotationAngle = arc.RotationAngle };
      }
      PolyLineSegment pls = s as PolyLineSegment;
      if (pls != null) {
        return new PolyLineSegment() { Points = Copy(pls.Points) };
      }
      PolyBezierSegment pbs = s as PolyBezierSegment;
      if (pbs != null) {
        return new PolyBezierSegment() { Points = Copy(pbs.Points) };
      }
      PolyQuadraticBezierSegment pqbs = s as PolyQuadraticBezierSegment;
      if (pqbs != null) {
        return new PolyQuadraticBezierSegment() { Points = Copy(pqbs.Points) };
      }
      Diagram.Error("Copying an unknown kind of PathSegment: " + s.ToString());
      return null;
    }