Engine提供的工具条能够轻易实现各种操作,非常方便,可是不好的地方就是太死板了,toolbar的图标都不能改。因此需要自己做按钮做控件去实现这些功能。
比如说放大和全景
//放大
private void ZoomIn_Click(object sender, RoutedEventArgs e)
{
ControlsMapZoomInTool zoomintool = new
ControlsMapZoomInTool();
zoomintool.OnCreate(mapControl.Object);
mapControl.CurrentTool =
(ESRI.ArcGIS.SystemUI.ITool)zoomintool;
}
//全景
private void zoomentire_Click(object sender, RoutedEventArgs
e)
{
ControlsMapFullExtentCommand fullview = new
ControlsMapFullExtentCommand();
fullview.OnCreate(mapControl.Object);
fullview.OnClick();
}
分别是调用了CurrentTool 和OnClick的方式。
ArcGIS MapControl 中常用命令
下面列举更多的一些命令。
功能类 事件
放大 ControlsMapZoomInTool 设置
CurrentTool
缩小ControlsMapZoomOutTool 设置
CurrentTool
打开文件ControlsOpenDocCommand OnClick()
添加数据ControlsAddDataCommand OnClick()
全图ControlsMapFullExtentCommand OnClick()
查找ControlsMapFindCommand OnClick()
属性工具ControlsMapIdentifyTool 设置
CurrentTool
选择Feature ControlsSelectFeaturesTool 设置
CurrentTool
清除选择ControlsClearSelectionCommand OnClick()
开始编辑ControlsEditingStartCommand OnClick()
保存编辑ControlsEditingSaveCommand OnClick()
停止编辑ControlsEditingStopCommand OnClick()
编辑工具ControlsEditingEditTool 设置
CurrentTool
属性编辑命
令
ControlsEditingAttributeCommand OnClick()
测量工具ControlsMapMeasureTool 设置
CurrentTool
创建路径(网
络分析)
ControlsNetworkAnalystRouteCommand OnClick()
创建路径点ControlsNetworkAnalystCreateLocationTool 设 置
CurrentTool
最短路径查
询
ControlsNetworkAnalystSolveCommand OnClick()
Scene缩小ControlsSceneExpandFOVCommand OnClick()
当然,还有很多很多其他的命令。从上面的列表比较我们也可以看出,一般
来说,如果类的后缀是Command,则用OnClick方法;如果是Tool,则设置Map
的CurrentTool属性为该工具。
ArcSence中的命令使用示例
以下是scenecontrol的一些:
private void btn_zoomin_Click(object sender, EventArgs e)
{
ICommand command = new
ControlsSceneZoomInTool();//ControlsSceneZoomInToolClass();
command.OnCreate(this.axSceneControl1.Object);
this.axSceneControl1.CurrentTool = command as
ESRI.ArcGIS.SystemUI.ITool;
}
private void btnzoomout_Click(object sender, EventArgs e)
{
ICommand command = new ControlsSceneZoomOutTool();
command.OnCreate(this.axSceneControl1.Object);
this.axSceneControl1.CurrentTool = command as
ESRI.ArcGIS.SystemUI.ITool;
}
//飞行模式。。
private void btntoolfly_Click(object sender, EventArgs e)
{
ICommand command = new
ControlsSceneFlyToolClass();//ControlsSceneZoomInToolClass();
command.OnCreate(this.axSceneControl1.Object);
this.axSceneControl1.CurrentTool = command as
ESRI.ArcGIS.SystemUI.ITool;
}
//选择模式..
private void btnSelect_Click(object sender, EventArgs e)
{
ICommand command = new
ControlsSceneSelectFeaturesToolClass();//ControlsSceneZoomInToolClass();
command.OnCreate(this.axSceneControl1.Object);
this.axSceneControl1.CurrentTool = command as
ESRI.ArcGIS.SystemUI.ITool;
}
//放大至目标区域
private void btntargetzoom_Click(object sender, EventArgs e)
{
ICommand command = new
ControlsSceneTargetZoomToolClass();//ControlsSceneZoomInToolClass();
command.OnCreate(this.axSceneControl1.Object);
this.axSceneControl1.CurrentTool = command as
ESRI.ArcGIS.SystemUI.ITool;
}
//全景
private void btnFullExtern_Click(object sender, EventArgs e)
{
ICommand command = new ControlsSceneFullExtentCommandClass();
command.OnCreate(this.axSceneControl1.Object);
command.OnClick();
}
private void btnpan_Click(object sender, EventArgs e)
{
ICommand command = new ControlsScenePanTool();
command.OnCreate(this.axSceneControl1.Object);
this.axSceneControl1.CurrentTool = command as
ESRI.ArcGIS.SystemUI.ITool;
}
private void button1_Click(object sender, EventArgs e)
{
ICommand command = new ControlsSceneNavigateTool();
command.OnCreate(this.axSceneControl1.Object);
this.axSceneControl1.CurrentTool = command as
ESRI.ArcGIS.SystemUI.ITool;
}