实验四 编辑工具条的实现
一、实验目的
1.熟悉arcgis中的编辑工具 2.掌握通过arcgis engine 的toolbarcontrol添加编辑工具条 3.掌握自定义工具条的添加
二、实验仪器与设备
计算机、visual studio 软件、ArcGIS engine 开发包
三、实验内容与步骤
- 通过arcgis engine 的toolbarcontrol添加编辑工具条
(1)从工具箱中添加一个toolbarcontrol到主界面中
(2)在toolbarcontrol中右键属性打开属性设置对话框,设置Buddy,绑定地图显示窗口。
(3)选择item页面,点击添加,选择相应的编辑按钮。
- 自定义工具条
自定义工具条实现的基本步骤: (1)调用IEngineEditor接口的StartEditing方法打开一个编辑对象; (2)将设定好参数的IEngineEditor接口跳转到IEngineEditLayers接口,设置目标图层; (3)通过IEngineEditTask对象设定编辑任务,并将其传递给当前的EngineEditor对象的CurrentTask属性; (4)实现所要执行的编辑操作(使用工具代替); (5)使用IEngineEditor接口的StopEditing方法,结束编辑任务并保存。 具体步骤如下: (1) 如toolbarcontrol中工具添加一样,添加 新建、编辑、捕捉、属性编辑、节点编辑、撤销、重做等工具; (2) 在界面上添加对应的自定义工具和图层选择下拉列表
(3) 开始编辑按钮
private void buttonItem15_Click(object sender, EventArgs e)
{
IFeatureLayer m_cureditlayer = getfeaturelayerbyname(this.cb_layerselect.Text);
if (m_cureditlayer == null)
{
MessageBox.Show("请选择可编辑的图层!");
return;
}
m_engineeditor = new EngineEditorClass();
m_engineeditor.EnableUndoRedo(true);
m_engineeditor.StartEditing(((IDataset)m_cureditlayer.FeatureClass).Workspace, this.axMapControl1.Map);
IEngineEditLayers editlayer = m_engineeditor as IEngineEditLayers;
editlayer.SetTargetLayer(m_cureditlayer, 0);
m_engineeditor.CurrentTask = m_engineeditor.GetTaskByUniqueName("ControlToolsEditing_CreateNewFeatureTask");
}
(4) 添加新要素
private void buttonItem21_Click(object sender, EventArgs e)
{
ICommand cmd = axToolbarControl1.GetItem(1).Command;
axMapControl1.CurrentTool = (ITool)cmd;
}
(5) 编辑要素
private void buttonItem28_Click(object sender, EventArgs e)
{
ICommand cmd = axToolbarControl1.GetItem(3).Command;
cmd.OnClick();
}
private void buttonItem22_Click(object sender, EventArgs e)
{
ICommand cmd = axToolbarControl1.GetItem(2).Command;
axMapControl1.CurrentTool = (ITool)cmd;
}
(6) 撤销与重做
private void buttonItem24_Click(object sender, EventArgs e)
{
ICommand cmd = axToolbarControl1.GetItem(6).Command;
cmd.OnClick();
}
private void buttonItem25_Click(object sender, EventArgs e)
{
ICommand cmd = axToolbarControl1.GetItem(7).Command;
cmd.OnClick();
}
(7) 节点编辑
private void buttonItem23_Click(object sender, EventArgs e)
{
ICommand cmd = axToolbarControl1.GetItem(4).Command;
cmd.OnClick();
}
(8) 停止编辑
private void buttonItem27_Click(object sender, EventArgs e)
{
m_engineeditor.StopEditing(true);
}
四、实验要求
分别采用arcgis engine的toolbarcontrol以及结合自定义工具分别实现矢量文件的编辑工具条。
五、实验心得与体会
1.学会了两种属性编辑的创建方式 2.对属性编辑有了更加深入的认识。
|