C#,arcengine制作鹰眼全过程(带注释)

来源:互联网 发布:时空医药软件 编辑:程序博客网 时间:2024/05/17 07:39
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();

 

            }

 

        }

 

   
没钱又丑,农村户口。头可断,发型一定不能乱。
[最近在南昌忙GIS辛苦...ing]
QQ: 14265545;83563956[10年不上一次的,还是论坛留言把]
MSN:QQ14265545@HOTMAIL.COM
有空来看看我的blog
http://gisempire.com/blog/blog.asp?name=cl991036