欢迎来到天天文库
浏览记录
ID:37083636
大小:1.48 MB
页数:77页
时间:2019-05-17
《ArcGISEngine二次开发——提高篇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.ArcGISEngine二次开发——提高篇1..1缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。在本小节中我们将学习如何制作这种鹰眼。1.1添加控件新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl、两个MapControl和LicenceControl等四个控件。布局如下图所示。左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。图1界面布局在ToolbarControl加载添加数据按钮和地图浏览的功能按
2、钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。图2添加按钮..1.1代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。下面开始实现鹰眼功能,添加usingESRI.ArcGIS.Carto、usingESRI.ArcGIS.Geometry、usingESRI.ArcGIS.Display三个引用。首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框
3、并显示,在OnExtentUpdated事件中添加代码如下:privatevoidaxMapControl1_OnExtentUpdated(objectsender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvente){//创建鹰眼中线框IEnvelopepEnv=(IEnvelope)e.newEnvelope;IRectangleElementpRectangleEle=newRectangleElementClass();IElementpEle=pRectangleEleasIElement;pEle.Geo
4、metry=pEnv;//设置线框的边线对象,包括颜色和线宽IRgbColorpColor=newRgbColorClass();pColor.Red=255;pColor.Green=0;pColor.Blue=0;pColor.Transparency=255;//产生一个线符号对象ILineSymbolpOutline=newSimpleLineSymbolClass();pOutline.Width=2;pOutline.Color=pColor;//设置颜色属性pColor.Red=255;pColor.Green=0;pColor.Blue=0;pColor.Transpare
5、ncy=0;//设置线框填充符号的属性IFillSymbolpFillSymbol=newSimpleFillSymbolClass();pFillSymbol.Color=pColor;pFillSymbol.Outline=pOutline;IFillShapeElementpFillShapeEle=pEleasIFillShapeElement;pFillShapeEle.Symbol=pFillSymbol;//得到鹰眼视图中的图形元素容器IGraphicsContainerpGra=axMapControl2.MapasIGraphicsContainer;IActiveVie
6、wpAv=pGraasIActiveView;..//在绘制前,清除axMapControl2中的任何图形元素pGra.DeleteAllElements();//鹰眼视图中添加线框pGra.AddElement((IElement)pFillShapeEle,0);//刷新鹰眼pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);}当鼠标点击鹰眼窗体时,主窗体Extent随之改变。在axMapControl2的OnMouseDown事件中添加代码如下:privatevoidaxMapControl2_OnMous
7、eDown(objectsender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvente){if(this.axMapControl2.Map.LayerCount!=0){//按下鼠标左键移动矩形框if(e.button==1){IPointpPoint=newPointClass();pPoint.PutCoords(e.mapX,e.mapY);IEn
此文档下载收益归作者所有