基于ArcEngine10.2和VS2012进行C#ArcEngine二次开发

创建与调用AOI书签

在如图所示的程序主窗体菜单栏中添加一个菜单项“创建书签”,其控件名为“miCreateBookmark”,用于调用“创建书签”窗体;在“创建书签”边上再添加一个组合框,其控件名为“cbBookmarkList”,用于保存已创建的书签名,并且能够在选中某书签名时,缩放到该书签对应的地图区域。

(一)添加类库和引用

在VS2012的资源管理器中添加ArcGIS引用,将ESRI.ArcGIS.Geometry类库的引用添加进项目。在主窗体的代码(即MainForm.cs)中导入ESRI.ArcGIS.Geometry

输入代码:using ESRI.ArcGIS.Geometry

这时如果发现VS提示代码中的Path类冲突,可以改成System.I/O.Path的形式避免冲突

(二)添加创建书签函数

在MainForm类中添加一个成员函数CreateBookmark,用来创建书签

 public void CreateBookmark(string sBookmarkName) {IAOIBookmark aoiBookmark = new AOIBookmarkClass();//if (aoiBookmark != null) { aoiBookmark.Location=axMapControl1.ActiveView.Extent;aoiBookmark.Name = sBookmarkName;}//add aoibookmark to mapIMapBookmarks bookmarks = axMapControl1.Map as IMapBookmarks;if(bookmarks != null){bookmarks.AddBookmark(aoiBookmark);}//add aoibookmark to the comboxitemcbBookmarkList.Items.Add(aoiBookmark.Name);}

(三)添加窗体

在VS2012的“项目”菜单下的“添加Windows窗体”中,添加一个Windows窗体,将窗体文件命名为”AdmitBookmarkName.cs“.该窗体用于获取用户定义的书签名称,并传递入主窗体。

向窗体中添加两个控件,一个TextBox,用于输入书签名称,控件名为"tbBookmarkName";一个Button,控件名为"btnAdmit"。

接着双击Button,自动生成"Click"事件的缺省的响应函数。

在当前窗体的代码中,添加一个主窗体类型的成员变量m_frmMain,并新建一个构造函数,以主窗体类型对象为参数,用于调用主窗体的相关成员。修改Click事件响应函数,实现书签名的传递。

代码如下:

public MainForm m_frmMain;public AdmitBookmarkName(MainForm  frm){InitializeComponent();if (frm != null) {m_frmMain = frm;}}private void btnAdimit_Click(object sender, EventArgs e){if (m_frmMain != null || tbBookmarkname.Text == "") {m_frmMain.CreateBookmark(tbBookmarkname.Text);}this.Close();}

(四)实现创建书签和调用书签功能

为主窗体的”创建书签“按钮生成"Click"事件响应函数并添加代码以实现确认书签名称功能。

private void miCreateBookmark_Click(object sender, EventArgs e){AdmitBookmarkName frmABN = new AdmitBookmarkName(this);frmABN.Show();}

为组合框"cbBookmarkList"生成"SelectedIndexChanged"事件响应函数,添加代码使当组合框中被选中项改变时,地图可以缩放至书签所在区域。

private void cbBookmarkList_SelectedIndexChanged(object sender, EventArgs e){//get bookmark_listIMapBookmarks bookmarks = axMapControl1.Map as IMapBookmarks;IEnumSpatialBookmark enumSpatialBookmark = bookmarks.Bookmarks;//enumSpatialBookmark.Reset();ISpatialBookmark spatialBookmark = enumSpatialBookmark.Next();while (spatialBookmark != null) {if (cbBookmarkList.SelectedItem.ToString() == spatialBookmark.Name){spatialBookmark.ZoomTo((IMap)axMapControl1.ActiveView);axMapControl1.ActiveView.Refresh();break;}spatialBookmark = enumSpatialBookmark.Next();}}

(五)如图所示,创建与调用AOI书签功能添加完毕。

参考书目:《GIS程序设计教程——基于ArcGIS Engine的C#开发实例》张丰,杜震洪,刘仁义 编著

C#ArcEngine二次开发——创建与调用AOI书签相关推荐

  1. ArcEngine二次开发

    ArcEngine二次开发 初识ArcEngine,个人笔记留档 引入主程序 //表示绑定的arcgis产品类型,即绑定arcgis engine. ESRI.ArcGIS.RuntimeManage ...

  2. c++ Arx二次开发创建椭圆和样条曲线

    一.本节课程 c++ Arx二次开发创建椭圆和样条曲线 二.本节要讲解的知识点 1.如何应用C++ ARX二次开发创建椭圆(对AcDbEllipse类的构造函数的直接封装和根据外接矩形来创建椭圆) 2 ...

  3. NX/UG二次开发创建曲面偏置体

    NX/UG二次开发--创建曲面偏置体 创建曲面偏置体 1.曲面偏置 创建曲面偏置体 这里介绍了一种对模型曲面进行偏置来获得偏置体的方法. 1.曲面偏置 void OffsetFace(tag_t fa ...

  4. NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp

    NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp #include <uf.h> #include <uf_modl.h> #inclu ...

  5. Arcgis ArcEngine二次开发: 输出宗地图、宗地草图、权属协议书附图、房产分层分户图、公示图、三调土地利用图、行政区划图、标准分幅图等各种图件

    1.Arcgis  ArcEngine二次开发: 输出宗地图.宗地草图.权属协议书附图.房产分层分户图.公示图.三调土地利用图.行政区划图.标准分幅图等各种图件 有需要联系QQ:185242573. ...

  6. UG二次开发 创建圆弧 UF_CURVE_create_arc

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG二次开发 创建圆弧 UF_CURVE_create_arc 代码: //圆心 d ...

  7. NX二次开发 创建坐标系 UF_CSYS_create_csys()

    简介: NX二次开发 创建坐标系 UF_CSYS_create_csys(). 代码: #include "me.hpp"extern DllExport void ufusr(c ...

  8. mfc中弹出wpf对话框_CAA二次开发-创建对话框

    步骤: 1.创建对话框框架 2.实现对话框中按钮的功能 1. 对话框框架搭建 框架搭建与第一节框架搭建一样,再次不再累述.针对对话框框架的搭建,在LocalInterfaces中,有CAADialog ...

  9. UG\NX二次开发 创建并报告所有装配部件的文本UDO

    文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UG\NX二次开发 创建并报告所有装配部件的文本UDO 效果: 代码: #inclu ...

最新文章

  1. 如何监听WebView完成加载URL?
  2. 数据结构:堆和败者树的区别是什么?
  3. 碎片化学习的三大障碍及破解之道
  4. 你在乎的--世界在乎的
  5. 7. Oracle数据加载和卸载
  6. 工作几天被裁员,难受
  7. MySQL 索引失效的 15 种场景!
  8. 基础知识—表达式与语句-表达式
  9. python中字符串输出乱码怎么解决_Python字符串的encode与decode研究心得乱码问题解决方法(转)...
  10. 春晓html代码,春晓
  11. 2-java学习笔记
  12. Excel控件 Spire.XLS系列教程(2):C# 设置现有 Excel 图表的数据标签样式
  13. jvm学习--类加载器
  14. 弹窗整人php源码,整人无限弹窗[附源码]
  15. SAP MM库存盘点流程
  16. XSS Overview
  17. Android数据存储之文件存储
  18. 红石外汇|每日汇评:黄金多头在美国CPI指数之前仍保持希望
  19. html+css静态页面还原 拼多多网页
  20. 突然悟到了“追求卓越”的真谛

热门文章

  1. 耐热聚乙烯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. python文件作用域是什么_Python中的命名空间、作用域以及locals() 和 globals()
  3. Arduino基础入门之五 震动开关以及中断
  4. 帝国cms网站建设的基本流程
  5. c#:英文日期转成中文日期 (汉字日期:二〇一一年五月十九日)
  6. 自学编程该如何入手?
  7. 使用PHP导出Excel时处理复杂表头的万能方法
  8. 2012值得中国创业者关注的美国机会
  9. 读《远见:如何规划职业生涯3大阶段》
  10. Grub2.04分析