VertexGeometry.cs
// Copyright 2011 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // using System; using System.Collections.Generic; using System.Linq; using System.Text; using ESRI.ArcGISExplorer.Geometry; namespace UpdateNoteGeometryCS { // This class can be used to edit the vertices of single-part polygons and polylines, and also of multipoints. // If used to edit multipart polygons or polylines, only the first part is edited; the class can be extended to // edit multiparts. class VertexGeometry { private Polygon _pgon = null; private Polyline _pline = null; private Multipoint _mpt = null; public VertexGeometry(Geometry geom) { switch (geom.GeometryType) { case GeometryType.Polygon: _pgon = geom as Polygon; break; case GeometryType.Polyline: _pline = geom as Polyline; break; case GeometryType.Multipoint: _mpt = geom as Multipoint; break; default: throw new NotSupportedException(); } } public Point GetPoint(int vertexIndex) { Point retVal = null; if (_pgon != null) { retVal = _pgon.GetPoint(vertexIndex); } else if (_pline != null) { retVal = _pline.GetPoint(vertexIndex); } else if (_mpt != null) { retVal = _mpt.GetPoint(vertexIndex); } return retVal; } public void SetPoint(int vertexIndex, Point newPoint) { if (_pgon != null) { _pgon.SetPoint(vertexIndex, newPoint); } else if (_pline != null) { _pline.SetPoint(vertexIndex, newPoint); } else if (_mpt != null) { _mpt.SetPoint(vertexIndex, newPoint); } } public int PointCount() { int retVal = -1; if (_pgon != null) { retVal = _pgon.PointCount(0); } else if (_pline != null) { retVal = _pline.PointCount(0); } else if (_mpt != null) { retVal = _mpt.PointCount; } return retVal; } } }