/// <summary> /// 创建几何图形对应的用于高亮显示的元素 /// </summary> /// <param name="geometry"></param> /// <returns></returns> private static IElement CreateHightLightElement(IGeometry geometry) { IElement element = null; IColor redcolor = RenderOpt.GetIColor(255, 0, 0, 50); IColor bluecolor = RenderOpt.GetIColor(0, 0, 255); switch (geometry.GeometryType) { case esriGeometryType.esriGeometryLine: case esriGeometryType.esriGeometryPolyline: element = new LineElementClass(); element.Geometry = geometry; ((ILineElement)element).Symbol = RenderOpt.GetSimpleLineSymbol(redcolor); break; case esriGeometryType.esriGeometryPolygon: element = new PolygonElementClass(); element.Geometry = geometry; ((PolygonElementClass)element).Symbol = RenderOpt.GetSimpleFillSymbol(redcolor, bluecolor); break; case esriGeometryType.esriGeometryPoint: element = new MarkerElementClass(); element.Geometry = geometry; IMarkerSymbol pisymbol = new SimpleMarkerSymbolClass(); pisymbol.Color = (IColor)redcolor; pisymbol.Size = 6; ((MarkerElementClass)element).Symbol = pisymbol; break; } return(element); }
//主地图:地图范围(Extent)变化 private void axMapControlMainMap_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e) { #region 主地图地图范围Extent变化时,鹰眼中的地图范围Extent也跟随着变化 IEnvelope envelope = (IEnvelope)e.newEnvelope; //得到主地图的新范围 IGraphicsContainer graphicsContainer = axMapControlEagleMap.Map as IGraphicsContainer; IActiveView activeView = graphicsContainer as IActiveView; graphicsContainer.DeleteAllElements(); //在绘制前,清除axMapControlEagleMap中的任何图形元素 IRectangleElement rectangleElement = new RectangleElement() as IRectangleElement; IElement element = rectangleElement as IElement; element.Geometry = envelope; //产生一个线符号对象,设置鹰眼中的红线框 ILineSymbol lineSymbol = new SimpleLineSymbol(); lineSymbol.Width = 1.6; lineSymbol.Color = RenderOpt.GetIColor(255, 0, 0); //设置填充符号的属性 IFillSymbol fillSymbol = new SimpleFillSymbol(); fillSymbol.Color = RenderOpt.GetIColor(255, 0, 0, 0); fillSymbol.Outline = lineSymbol; IFillShapeElement fillShapeElement = element as IFillShapeElement; fillShapeElement.Symbol = fillSymbol; graphicsContainer.AddElement((IElement)fillShapeElement, 0); //刷新 envelope.Expand(2, 2, true); activeView.Extent = envelope; activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); #endregion }