ArcGIS Engine(8)

2020-02-21 18:22

bool enabled = false; int i;

if (m_subType == 1)

{

for (i=0;i<=m_hookHelper.FocusMap.LayerCount - 1;i++)

{

if (m_hookHelper.ActiveView.FocusMap.get_Layer(i).Visible == false)

{

enabled = true;

break;

}

}

}

else

{

for (i=0;i<=m_hookHelper.FocusMap.LayerCount - 1;i++)

{

if (m_hookHelper.ActiveView.FocusMap.get_Layer(i).Visible == true)

{

enabled = true;

break;

}

}

}

return enabled;

}

}

} }

移除图层类RemoveLayer代码:

using ESRI.ArcGIS.ADF.BaseClasses; using ESRI.ArcGIS.Carto;

using ESRI.ArcGIS.Controls;

namespace _sdnMap {

///

/// 删除图层

///

public sealed class RemoveLayer : BaseCommand

{

private IMapControl3 m_mapControl;

public RemoveLayer()

{

base.m_caption = \

}

public override void OnClick()

{

ILayer layer = (ILayer)m_mapControl.CustomProperty;

m_mapControl.Map.DeleteLayer(layer);

}

public override void OnCreate(object hook)

{

m_mapControl = (IMapControl3)hook;

}

} }

放大至整个图层类ZoomToLayer:

using ESRI.ArcGIS.ADF.BaseClasses; using ESRI.ArcGIS.Carto;

using ESRI.ArcGIS.Controls;

namespace _sdnMap {

///

/// 放大至整个图层

///

public sealed class ZoomToLayer : BaseCommand

{

private IMapControl3 m_mapControl;

public ZoomToLayer()

{

base.m_caption = \

}

public override void OnClick()

{

ILayer layer = (ILayer)m_mapControl.CustomProperty;

m_mapControl.Extent = layer.AreaOfInterest;

}

public override void OnCreate(object hook)

{

m_mapControl = (IMapControl3)hook;

}

} }

以上三个工具或命令的实现代码比较简单,在此不过多的分析,请读者自行理解。

下面在Form1_Load函数中进行菜单项的添加,代码如下:

//添加自定义菜单项到TOCCOntrol的Map菜单中 //打开文档菜单

m_menuMap.AddItem(new OpenNewMapDocument(m_controlsSynchronizer), esriCommandStyles.esriCommandStyleIconAndText);

//添加数据菜单

m_menuMap.AddItem(new ControlsAddDataCommandClass(), -1,

-1, 1, 0, false,

false,

esriCommandStyles.esriCommandStyleIconAndText);

//打开全部图层菜单

m_menuMap.AddItem(new LayerVisibility(), 1, 2, false, esriCommandStyles.esriCommandStyleTextOnly);

//关闭全部图层菜单

m_menuMap.AddItem(new LayerVisibility(), 2, 3, false, esriCommandStyles.esriCommandStyleTextOnly);

//以二级菜单的形式添加内置的“选择”菜单

m_menuMap.AddSubMenu(\

//以二级菜单的形式添加内置的“地图浏览”菜单

m_menuMap.AddSubMenu(\

//添加自定义菜单项到TOCCOntrol的图层菜单中

m_menuLayer = new ToolbarMenuClass();

//添加“移除图层”菜单项

m_menuLayer.AddItem(new RemoveLayer(), -1, 0, false, esriCommandStyles.esriCommandStyleTextOnly);

//添加“放大到整个图层”菜单项

m_menuLayer.AddItem(new ZoomToLayer(), -1, 1, true, esriCommandStyles.esriCommandStyleTextOnly);

//设置菜单的Hook

m_menuLayer.SetHook(m_mapControl);

m_menuMap.SetHook(m_mapControl); 3、

弹出右键菜单

顾名思义,右键菜单是在鼠标右键按下的时候弹出,所以我们要添加TOCControl1控件的OnMouseDown事件,实现代码如下:


ArcGIS Engine(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:审计案例分析及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: