闫磊关于鹰眼的制作

来源:互联网 发布:淘宝怎么选择菜鸟驿站 编辑:程序博客网 时间:2024/04/29 20:12
C#制作鹰眼全过程(带注释)
axMapControl1是主控件
要看清楚事件响应
 

1.鹰眼地图资源载入

private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)        {            //当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换            axMapControl2.LoadMxFile(axMapControl1.DocumentFilename);            axMapControl2.Extent = axMapControl2.FullExtent;        }

2.绘制鹰眼矩形框

private void setMap2(IMapControlEvents2_OnExtentUpdatedEvent e)        {            // 得到新范围             IEnvelope pEnv = (IEnvelope)e.newEnvelope;            IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;            IActiveView pAv = pGra as IActiveView;             //在绘制前,清除axMapControl2中的任何图形元素             pGra.DeleteAllElements();            IRectangleElement pRectangleEle = new RectangleElementClass();            IElement pEle = pRectangleEle as IElement;            pEle.Geometry = pEnv;             //设置鹰眼图中的红线框             IRgbColor pColor = new RgbColorClass();            pColor.Red = 255;            pColor.Green = 0;            pColor.Blue = 0;            pColor.Transparency = 255;            //产生一个线符号对象             ILineSymbol pOutline = new SimpleLineSymbolClass();            pOutline.Width = 2;            pOutline.Color = pColor;            //设置颜色属性            pColor = new RgbColorClass();            pColor.Red = 255;            pColor.Green = 0;            pColor.Blue = 0;            pColor.Transparency = 0;             //设置填充符号的属性            IFillSymbol pFillSymbol = new SimpleFillSymbolClass();            pFillSymbol.Color = pColor;            pFillSymbol.Outline = pOutline;            IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;            pFillShapeEle.Symbol = pFillSymbol;            pGra.AddElement((IElement)pFillShapeEle, 0);            pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);        }private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e){setMap2(e);}
3.互动

private void axMapControl2_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)        { //by yl 改进 landgis@126.co            IRubberBand pBand = new RubberEnvelopeClass();             IGeometry pGeometry = pBand.TrackNew(axMapControl2.ActiveView.ScreenDisplay, null);             if (pGeometry.IsEmpty)            {                IPoint pPt = new PointClass();                pPt.PutCoords(e.mapX, e.mapY);                //改变主控件的视图范围                axMapControl1.CenterAt(pPt);            }            else            {                axMapControl1.Extent = pGeometry.Envelope;                axMapControl1.ActiveView.Refresh();             }         }



原创粉丝点击