/// <summary> /// Pan Geometry. /// </summary> /// <param name="geometry">Geometry to pan.</param> /// <param name="dx">Pan dx.</param> /// <param name="dy">Pan dy.</param> /// <returns>New geometry.</returns> private object _PanGeometry(object geometry, double dx, double dy) { Debug.Assert(geometry != null); Point[] points = null; if (geometry is Point) { Point?pt = geometry as Point?; points = new Point[] { pt.Value }; } else if (geometry is PolyCurve) { PolyCurve polyCurve = geometry as PolyCurve; points = polyCurve.GetPoints(0, polyCurve.TotalPointCount); } else { throw new NotSupportedException(); } if (points.Length == 1 || !(_editedGraphic is EditMarkerGraphicObject)) { for (int index = 0; index < points.Length; index++) { double newX = points[index].X + dx; double newY = points[index].Y + dy; Point point = new Point(newX, newY); points[index] = point; } } else { _PanByEditMarker(points, dx, dy, geometry as PolyCurve); } // Create new geometry. object newGeometry = null; if (geometry is Point) { newGeometry = points[0]; } else if (geometry is Polygon) { newGeometry = new Polygon((geometry as Polygon).Groups, points); } else if (geometry is Polyline) { newGeometry = new Polyline((geometry as Polyline).Groups, points); } else { throw new NotSupportedException(); } return(newGeometry); }