private void DrawEnvelope(IEnvelope env, ISpatialCRS crs, out ArrayList rPolylineList) { rPolylineList = new ArrayList(); IPolyline polyline = new GeometryFactory().CreateGeometry(gviGeometryType.gviGeometryPolyline, gviVertexAttribute.gviVertexAttributeZ) as IPolyline; polyline.SpatialCRS = crs; IPoint point = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ); point.SpatialCRS = crs; ISimplePointSymbol psy = new SimplePointSymbol(); psy.FillColor = System.Drawing.Color.Yellow; psy.Size = 10; ICurveSymbol cSymbol = new CurveSymbol(); cSymbol.Color = System.Drawing.Color.Yellow; cSymbol.Width = 2; point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0); //0 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 1); //1 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 2); //2 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 3); //3 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 4); //0 polyline.AppendPoint(point); //close rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0); //5 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0); //6 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0); //7 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4 polyline.AppendPoint(point); //close rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0); //0 polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0); //7 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 0); //1 polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0); //6 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 0); //2 polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0); //5 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 0); //3 polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); }
private void DrawEnvelope(int fid, IFeatureClass fc, out ArrayList rPolylineList) { rPolylineList = new ArrayList(); string filterString = string.Format("oid={0}", fid); IQueryFilter filter = new QueryFilter(); filter.WhereClause = filterString; IFdeCursor cursor = null; try { cursor = fc.Search(filter, true); if (cursor != null) { IRowBuffer fdeRow = null; while ((fdeRow = cursor.NextRow()) != null) { IFieldInfoCollection col = fdeRow.Fields; for (int i = 0; i < col.Count; ++i) { IFieldInfo info = col.Get(i); if (info.GeometryDef != null && info.GeometryDef.GeometryColumnType == gviGeometryColumnType.gviGeometryColumnModelPoint) { int nPos = fdeRow.FieldIndex(info.Name); IModelPoint mp = fdeRow.GetValue(nPos) as IModelPoint; IEnvelope env = mp.Envelope; IPolyline polyline = new GeometryFactory().CreateGeometry(gviGeometryType.gviGeometryPolyline, gviVertexAttribute.gviVertexAttributeZ) as IPolyline; polyline.SpatialCRS = fc.FeatureDataSet.SpatialReference; IPoint point = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ); point.SpatialCRS = fc.FeatureDataSet.SpatialReference; ISimplePointSymbol psy = new SimplePointSymbol(); psy.FillColor = System.Drawing.Color.Yellow; psy.Size = 10; ICurveSymbol cSymbol = new CurveSymbol(); cSymbol.Color = System.Drawing.Color.Yellow; cSymbol.Width = 2; point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0); //0 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 1); //1 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 2); //2 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 3); //3 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 4); //0 polyline.AppendPoint(point); //close rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0); //5 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0); //6 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0); //7 //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy); polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4 polyline.AppendPoint(point); //close rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0); //0 polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0); //7 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 0); //1 polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0); //6 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 0); //2 polyline.AppendPoint(point); point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0); //5 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); polyline.SetEmpty(); point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 0); //3 polyline.AppendPoint(point); point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4 polyline.AppendPoint(point); rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId)); } } } } } catch (COMException ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } finally { if (cursor != null) { //Marshal.ReleaseComObject(cursor); cursor = null; } } }