ArcGIS_Engine二次开发——基础篇

时间:2025-04-20

ArcGIS_Engine二次开发——基础篇

ArcGIS Engine二次开发

——基础篇

1 ArcGIS Engine二次开发——基础篇

1.1 第一个简单的ArcGIS Engine地图显示程序

这个例子将引导您创建第一个简单的地图显示程序,并添加基本的缩放和漫游功能。

如果您之前没有接触过ArcGIS Engine的开发,那么这个例子是您迈入ArcGIS Engine二

次开发大门的极好例子,将从零开始引导您一步一步完成任务。

1.1.1 创建一个新的工程

首先打开Microsoft Visual Studio 2005,点击菜单栏中的“文件”—>“新建”—>“项目”,

在弹出的对话框中选择新建一个Visual C#的Windows应用程序,之后更改项目名称为“地

图浏览”,更改文件的路径为个人实习文件夹,点击“确定”即可。

图 1新建项目对话框

选中项目“地图浏览”中的窗体“Form1”,修改其Name属性为“MainForm”,Text

属性为“地图浏览”,

图 2窗体命名

1.1.2 添加控件及引用

点击编译器最左侧的“工具箱”(不存在时可通过“视图”“工具箱”打开),在弹出的选择

项中找到“ArcGIS Windows Forms”项,单击其中的MapControl,之后在Form1的空白处

单击鼠标左键不放并拖拽鼠标,直到调整MapControl到合适的大小再松开鼠标(您也可以

直接在工具箱中双击MapControl,该控件则会自动加入到Form1中)。用同样的方法,再

将LicenseControl添加到Form1中。

图 3 打开工具箱

图 4工具箱

如果您在工具箱中找不到MapControl,则请依次尝试以下两种解决方案。首先单击工

具栏,待工具箱弹出之后,在工具箱的任意位置上单击鼠标右键,从弹出菜单中选择“重置

工具箱”。如果这一步操作之后仍然无法看到MapControl,则在工具箱的任意位置上单击鼠

标右键,找到“常规”选项卡,然后在“常规”选项卡上单击鼠标右键,在弹出菜单中单击“选择

项(I)…”,在弹出的对话框中选择“.NET Framework组件”,找到“LicenseControl”和

“MapControl”,将这两项前的复选框打上勾,最后点击确定即可(如果在“.NET Framework

组件”这个面板中找不到这两项,则选择“COM 组件”面板,在“ESRI LicenseControl”和“ESRI

MapControl”前面打勾)。

图 5重置工具箱

图 6选择项

图 7选择工具箱项

图 8选择工具箱项

添加好MapControl和LicenseControl之后,调整Form1和MapControl的位置与大小,

如下图所示:

图 9窗体布局

1.1.3 添加地图

在MapControl上单击鼠标右键,选择“属性”,则会弹出MapControl的属性设置面板,

在之前也介绍过,通过这个面板可以完成许多简单的工作。

如图所示,点击“Map”面板,之后点击按钮,在弹出的对话框中选择路径为“ \GIS

设计与开发\例子数据\China”,再在此路径下选择“bou2_4p”,点击“Open”。之后在

MapControl的属性页上点击“确定”即可。

图 10“Map”面板

至此,我们已经完成了一个最简单的地图显示程序。.点击“启动调试”按钮(或者在

“调试”菜单下选择相应命令,或者按键盘的F5键),可以得到如下的运行结果。

图 11初次运行结果

1.1.4 添加代码

我们没有书写任何代码,就得到了一个最简单的地图显示程序。但这个程序还不能与

用户交互,下一步我们需要添加一些代码,让程序能响应用户的鼠标,完成放大和全图显示

的功能。

选中MapControl控件,单击属性窗口中的事件按钮,可以看到MapControl控件

能够响应的所有事件(关于每个事件的详细使用方法等请参见帮助系统),我们可以通过双

击对应事件进入代码编辑界面,这里我们选择“OnMouseDown”事件(注:控件的

“OnMouseDown”事件也可以通过双击控件直接进入到代码编辑界面),下一步就需要在这

个事件中添加响应鼠标的相关代码。

图 12 MapControl控件支持的所有方法

请您在axMapControl1的OnMouseDown事件中添加代码,如下所示:

private void axMapControl1_OnMouseDown(object sender,

ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)

{

if (e.button == 1)

this.axMapControl1.Extent = this.axMapControl1.TrackRectangle();

else if (e.button == 2)

this.axMapControl1.Extent = this.axMapControl1.FullExtent;

}

再次运行程序,鼠标左键在地图上拉框可以实现地图的放大功能,而右键单击地图则

会还原地图的全图显示。

图 1任意比例尺放大功能

如果将代码替换如下,则能实现左键放大,右键漫游的功能。

private void axMapControl1_OnMouseDown(object sender,

ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)

{

if (e.button == 1)

this.axMapControl1.Extent = this.axMapControl1.TrackRectangle();

else if (e.button == 2)

this.axMapControl1.Pan();

}

注释:

代码中根据e中包含的“button”值来判断鼠标的单击操作是来自何处,若button值为1,

则为鼠标左键,2代表鼠标右键,4代表鼠标中键。当判断得到是鼠标左键单击时,执行

“this.axMapControl1.Extent = …… 此处隐藏:4152字,全部文档内容请下载后查看。喜欢就下载吧 ……

ArcGIS_Engine二次开发——基础篇.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

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