ArcGISEngine二次开发――提高篇
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IActiveView pAv=pGra as IActiveView;
//在绘制前,清除axMapControl2中的任何图形元素
pGra.DeleteAllElements();
//鹰眼视图中添加线框
pGra.AddElement(( IElement )pFillShapeEle,0);
//刷新鹰眼
ESRI.ArcGIS.Controls. IMapControlEvents2_OnMouseDownEvent e)
{
if (this .axMapControl2.Map.LayerCount!=0)
{
//按下鼠标左键移动矩形框
if (e.button== 1)
{
IPoint pPoint=new PointClass();
下面开始实现鹰眼功能,添加using ESRI.ArcGIS.Carto、using ESRI.ArcGIS.Geometry、
using ESRI.ArcGIS.Display三个引用。首先在axMapControll中视图范围改变时鹰眼窗体要做
出对应的响应,即绘制线框并显示,在OnExtentUpdated事件 中添加代码如下:private void axMapControl1_OnExtentUpdated( object sender,
图1界面布局
在ToolbarControl加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图2添加按钮
1.2
鹰眼用来显示主窗体当前视图范围在全景视图中的位置, 在ArcMap中使用一个线框在 鹰眼视图中标识。 当主视图中的视图范围改变时, 鹰眼中的线框随之改变, 当拖动鹰眼视图 中的红线框时,主视图中的视图范围也随之改变。
IElement pEle=pRectangleEle as IElement;
pEle.Geometry=pEnv;
//设置线框的边线对象,包括颜色和线宽
IRgbColor pColor=new RgbColorClass();
pColor.Red= 255;
pColor.Green=来自百度文库0;
pColor.Blue= 0;
ArcGIS Engine二次开发
——提高篇
1
鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地 图的范围。在本小节中我们将学习如何制作这种鹰眼。
1.1
新建一个C#.Net项目,项目名称为OverView,将Forml的名字设置为Mai nF orm,并
添加ToolbarControl、两个MapControl和LicenceControl等四个控件。布局如下图所示。左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
pColor.Blue= 0;
pColor.Transparency= 0;
//设置线框填充符号的属性
IFillSymbol pFillSymbol=new SimpleFillSymbolClass();
pFillSymbol.Color=pColor;
pFillSymbol.Outline=pOutline;
}
//按下鼠标右键绘制矩形框
else if (e.button== 2)
{
IEnvelope pEnvelop=this .axMapControl2.TrackRectangle();
this .axMapControl1.Extent=pEnvelop;
this .axMapControl1.ActiveView.PartialRefresh( esriViewDrawPhase .esriViewGeography,
ESRI.ArcGIS.Controls. IMapControlEvents2_OnExtentUpdatedEvent e)
{
//创建鹰眼中线框
IEnvelope pEnv= (IEnvelope )e.newEnvelope;
IRectangleElement pRectangleEle=new RectangleElementClass();
IFillShapeElement pFillShapeEle=pEle as IFillShapeElement;
pFillShapeEle.Symbol=pFillSymbol;
//得到鹰眼视图中的图形元素容器
IGraphicsContainer pGra=axMapControl2.Map as IGraphicsContainer;
pPoint.PutCoords(e.mapX, e.mapY);
IEnvelope pEnvelope=this .axMapControl1.Extent; pEnvelope.CenterAt(pPoint);
this .axMapControl1.Extent=pEnvelope;
this .axMapControl1.ActiveView.PartialRefresh( esriViewDrawPhase .esriViewGeography,
pAv.PartialRefresh( esriViewDrawPhase .esriViewGraphics, null, null);
}
当鼠标点击鹰眼窗体时,主窗体Extent随之改变。在axMapControl2的 事件中添加代码如下:
private void axMapControl2_OnMouseDown( object sender,
}
}
}
当鼠标在鹰眼窗体移动时, 主窗体Extent随之改变。 在axMapControl2的 事件中添加代码如下:
private void axMapControl2_OnMouseMove( object sender,
pColor.Transparency= 255;
//产生一个线符号对象
ILineSymbol pOutline=new SimpleLineSymbolClass();
pOutline.Width= 2;
pOutline.Color=pColor;
//设置颜色属性
pColor.Red= 255;
pColor.Green= 0;
//在绘制前,清除axMapControl2中的任何图形元素
pGra.DeleteAllElements();
//鹰眼视图中添加线框
pGra.AddElement(( IElement )pFillShapeEle,0);
//刷新鹰眼
ESRI.ArcGIS.Controls. IMapControlEvents2_OnMouseDownEvent e)
{
if (this .axMapControl2.Map.LayerCount!=0)
{
//按下鼠标左键移动矩形框
if (e.button== 1)
{
IPoint pPoint=new PointClass();
下面开始实现鹰眼功能,添加using ESRI.ArcGIS.Carto、using ESRI.ArcGIS.Geometry、
using ESRI.ArcGIS.Display三个引用。首先在axMapControll中视图范围改变时鹰眼窗体要做
出对应的响应,即绘制线框并显示,在OnExtentUpdated事件 中添加代码如下:private void axMapControl1_OnExtentUpdated( object sender,
图1界面布局
在ToolbarControl加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图2添加按钮
1.2
鹰眼用来显示主窗体当前视图范围在全景视图中的位置, 在ArcMap中使用一个线框在 鹰眼视图中标识。 当主视图中的视图范围改变时, 鹰眼中的线框随之改变, 当拖动鹰眼视图 中的红线框时,主视图中的视图范围也随之改变。
IElement pEle=pRectangleEle as IElement;
pEle.Geometry=pEnv;
//设置线框的边线对象,包括颜色和线宽
IRgbColor pColor=new RgbColorClass();
pColor.Red= 255;
pColor.Green=来自百度文库0;
pColor.Blue= 0;
ArcGIS Engine二次开发
——提高篇
1
鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地 图的范围。在本小节中我们将学习如何制作这种鹰眼。
1.1
新建一个C#.Net项目,项目名称为OverView,将Forml的名字设置为Mai nF orm,并
添加ToolbarControl、两个MapControl和LicenceControl等四个控件。布局如下图所示。左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
pColor.Blue= 0;
pColor.Transparency= 0;
//设置线框填充符号的属性
IFillSymbol pFillSymbol=new SimpleFillSymbolClass();
pFillSymbol.Color=pColor;
pFillSymbol.Outline=pOutline;
}
//按下鼠标右键绘制矩形框
else if (e.button== 2)
{
IEnvelope pEnvelop=this .axMapControl2.TrackRectangle();
this .axMapControl1.Extent=pEnvelop;
this .axMapControl1.ActiveView.PartialRefresh( esriViewDrawPhase .esriViewGeography,
ESRI.ArcGIS.Controls. IMapControlEvents2_OnExtentUpdatedEvent e)
{
//创建鹰眼中线框
IEnvelope pEnv= (IEnvelope )e.newEnvelope;
IRectangleElement pRectangleEle=new RectangleElementClass();
IFillShapeElement pFillShapeEle=pEle as IFillShapeElement;
pFillShapeEle.Symbol=pFillSymbol;
//得到鹰眼视图中的图形元素容器
IGraphicsContainer pGra=axMapControl2.Map as IGraphicsContainer;
pPoint.PutCoords(e.mapX, e.mapY);
IEnvelope pEnvelope=this .axMapControl1.Extent; pEnvelope.CenterAt(pPoint);
this .axMapControl1.Extent=pEnvelope;
this .axMapControl1.ActiveView.PartialRefresh( esriViewDrawPhase .esriViewGeography,
pAv.PartialRefresh( esriViewDrawPhase .esriViewGraphics, null, null);
}
当鼠标点击鹰眼窗体时,主窗体Extent随之改变。在axMapControl2的 事件中添加代码如下:
private void axMapControl2_OnMouseDown( object sender,
}
}
}
当鼠标在鹰眼窗体移动时, 主窗体Extent随之改变。 在axMapControl2的 事件中添加代码如下:
private void axMapControl2_OnMouseMove( object sender,
pColor.Transparency= 255;
//产生一个线符号对象
ILineSymbol pOutline=new SimpleLineSymbolClass();
pOutline.Width= 2;
pOutline.Color=pColor;
//设置颜色属性
pColor.Red= 255;
pColor.Green= 0;