《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现

原文:《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现

摘要:在上一讲中,我们完成了 MapControl 和PageLayoutControl两种视图的同步工作,本讲我们将完成状态栏信息的添加与实现。应用程序的状态栏一般用来显示程序的当前状态,当前所使用的工具。 GIS应用程序一般也在状态栏显示当前光标的坐标、比例尺等信息。学习完本讲内容,您将学会状态栏编程的基本方法,并且能够在我们的程序的状态栏中添加且显示以下信息:当前所用工具信息、当前比例尺、当前坐标。

 教程目录:

第一讲 桌面GIS应用程序框架的建立

第二讲 菜单的添加及其实现

第三讲 MapControl与PageLayoutControl同步

第四讲 状态栏信息的添加与实现

第五讲 鹰眼的实现

第六讲 右键菜单添加与实现

教程Bug及优化方案1

第七讲 图层符号选择器的实现1

第七讲 图层符号选择器的实现2

第八讲 属性数据表的查询显示

------------------------------------------------------------------

在上一讲中,我们完成了 MapControl 和 PageLayoutControl 两种视图的同步工作,本讲我们将完成状态栏信息的添加与实现。

应用程序的状态栏一般用来显示程序的当前状态,当前所使用的工具。 GIS 应用程序一般也在状态栏显示当前光标的坐标、比例尺等信息。

学习完本讲内容,您将学会状态栏编程的基本方法,并且能够在我们的程序的状态栏中添加且显示以下信息:

  • 当前所用工具信息
  • 当前比例尺
  • 当前坐标

1、 添加状态栏项目

在设计视图中,点击窗体中的状态栏,在其属性面板中找到“ Items ”项,单击其右边的按钮,在下拉框中选择“ StatusLabel ”,单击“添加按钮”,依次添加四个 StatusLabel ,依次修改属性参数如下表所示:


序号


Name 属性


Text 属性


Spring 属性


说明


1


MessageLabel


就绪


False


当前所用工具信息


2


Blank


True


占位


3


ScaleLabel


比例尺


False


当前比例尺


4


CoordinateLabel


当前坐标


False


当前坐标

设置好之后如下图所示:

Tips

我们设计出的状态栏最终如下所示:


就绪


( Blank )


比例尺


当前坐标

Spring 属性表示可以按状态栏剩余空间自动伸缩。所以加入 Blank 项目,只是为了占个位子,以达到 ScaleLabel 和 CoordinateLabel 项目右对齐而 MessageLabel 项目左对齐的目的。

2、 显示当前所用工具信息

首先添加 axToolbarControl1 的 OnMouseMove 事件 ( 相信大家看了以上的教程,已经知道怎么添加事件了吧,还不知道的建议再温习下前几讲的内容 ) 。在其事件响应函数代码如下:

 private void axToolbarControl1_OnMouseMove(object sender, IToolbarControlEvents_OnMouseMoveEvent e)

{

// 取得鼠标所在工具的索引号

int index = axToolbarControl1.HitTest(e.x, e.y, false);

if (index != -1)

{

// 取得鼠标所在工具的 ToolbarItem

IToolbarItem toolbarItem = axToolbarControl1.GetItem(index);

// 设置状态栏信息

MessageLabel.Text = toolbarItem.Command.Message;

}

else

{

MessageLabel.Text = " 就绪 ";

}

}

3、 显示当前比例尺

添加 axMapControl1 的 OnMouseMove 事件,其代码如下:

 private void axMapControl1_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)

{

// 显示当前比例尺

ScaleLabel.Text = " 比例尺 1:" + ((long)this.axMapControl1.MapScale).ToString();

}

4、 显示当前坐标

显示当前坐标也是 axMapControl1 的 OnMouseMove 事件中响应,故只要在 axMapControl1_OnMouseMove 函数中添加如下代码即可:

 // 显示当前坐标

CoordinateLabel.Text = " 当前坐标 X = " + e.mapX.ToString() + " Y = " + e.mapY.ToString() + " " + this.axMapControl1.MapUnits;

按F5 编译运行,可以看到,我们的程序已经能够正常工作了。但是细心的你可能会发现,当前坐标的后面的坐标单位为“ esriUnknownUnits”或“ esriMeters ”之类,即系统在正常单位的前面加上了“ esri ”,追求完美的我们自然看得不舒服。那就进行简单的替换吧。

首先定义个全局坐标单位变量 sMapUnits ,如下所示:

 private string sMapUnits;

再 Form1_Load 函数中进行初始化:

sMapUnits = "Unknown";  

添加 axMapControl1 控件的 OnMapReplaced 事件,在事件响应函数中进行坐标单位替换,代码如下:

 private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)

{

esriUnits mapUnits = axMapControl1.MapUnits;

switch (mapUnits)

{

case esriUnits.esriCentimeters:

sMapUnits = "Centimeters";

break;

case esriUnits.esriDecimalDegrees:

sMapUnits = "Decimal Degrees";

break;

case esriUnits.esriDecimeters:

sMapUnits = "Decimeters";

break;

case esriUnits.esriFeet:

sMapUnits = "Feet";

break;

case esriUnits.esriInches:

sMapUnits = "Inches";

break;

case esriUnits.esriKilometers:

sMapUnits = "Kilometers";

break;

case esriUnits.esriMeters:

sMapUnits = "Meters";

break;

case esriUnits.esriMiles:

sMapUnits = "Miles";

break;

case esriUnits.esriMillimeters:

sMapUnits = "Millimeters";

break;

case esriUnits.esriNauticalMiles:

sMapUnits = "NauticalMiles";

break;

case esriUnits.esriPoints:

sMapUnits = "Points";

break;

case esriUnits.esriUnknownUnits:

sMapUnits = "Unknown";

break;

case esriUnits.esriYards:

sMapUnits = "Yards";

break;

}

}

5、 编译运行

按 F5 编译运行程序。如果你足够细心的话,相信你已经成功了!

在本讲中,介绍中 StatusStrip 控件的基本使用方法和 AE 中当所用工具信息、当前比例尺和当前坐标的显示调用方法。

时间: 2024-11-13 02:42:17

《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现的相关文章

《ArcGIS Engine+C#实例开发教程》第八讲 属性数据表的查询显示

原文:<ArcGIS Engine+C#实例开发教程>第八讲 属性数据表的查询显示 第一讲 桌面GIS应用程序框架的建立 第二讲 菜单的添加及其实现 第三讲 MapControl与PageLayoutControl同步 第四讲 状态栏信息的添加与实现 第五讲 鹰眼的实现 第六讲 右键菜单添加与实现 教程Bug及优化方案1 第七讲 图层符号选择器的实现1 第七讲 图层符号选择器的实现2 第八讲 属性数据表的查询显示 摘要:这一讲中,我们将实现图层属性数据表的查询显示.在ArcMap中,单击图层右

《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步

原文:<ArcGIS Engine+C#实例开发教程>第三讲 MapControl与PageLayoutControl同步 摘要:在ArcMap中,能够很方面地进行MapView和LayoutView两种视图的切换,而且二者之间的数据是同步显示的.关于两种视图同步的实现方法有多种,可以使用ObjectCopy对象进行数据硬拷贝,而比较简单的方法莫过于二者共享一份地图了,这也是最常用的方法.  教程目录: 第一讲 桌面GIS应用程序框架的建立 第二讲 菜单的添加及其实现 第三讲 MapContr

《ArcGIS Engine+C#实例开发教程》第五讲 鹰眼的实现

原文:<ArcGIS Engine+C#实例开发教程>第五讲 鹰眼的实现 摘要:所谓的鹰眼,就是一个缩略地图,上面有一个矩形框,矩形框区域就是当前显示的地图区域,拖动矩形框可以改变当前地图显示的位置,改变矩形框的大小,可以改变当前地图的显示区域大小,从起到导航的作用.鹰眼是地图浏览中常用的功能之一.关于鹰眼的实现方式,最常用的是用一个 MapControl控件显示地图全图,并在上面画一个红色矩形框表示当前地图的显示范围,并实现鹰眼 MapControl 与主窗体的 MapControl 互动.

《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现

原文:<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现 摘要:我们要实现的是图层符号选择器,与ArcMap中的Symbol Selector的类似.本讲较前几讲而言,些许有些复杂,不过只要仔细琢磨,认真操作,你就很容易实现如下所示的符号选择器.  教程目录: 第一讲 桌面GIS应用程序框架的建立 第二讲 菜单的添加及其实现 第三讲 MapControl与PageLayoutControl同步 第四讲 状态栏信息的添加与实现 第五讲 鹰眼的实现 第六讲 右键菜单添加与

微信公众平台开发教程(四) 实例入门:机器人(附源码)

微信公众平台开发教程(四) 实例入门:机器人(附源码) 上一篇文章,写了基本框架,可能很多人会觉得晕头转向,这里提供一个简单的例子来予以说明,希望能帮你解开谜团. 一.功能介绍 通过微信公众平台实现在线客服机器人功能.主要的功能包括:简单对话.查询天气等服务. 这里只是提供比较简单的功能,重在通过此实例来说明公众平台的具体研发过程.只是一个简单DEMO,如果需要的话可以在此基础上进行扩展. 当然后续我们还会推出比较复杂的应用实例. 二.具体实现 1.提供访问接口 这里不再赘述,参照上一章,微信公

ArcGIS Runtime for Android开发教程V2.0(1)基本概念

原文地址: ArcGIS Runtime for Android开发教程V2.0(1)基本概念 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8113183   1.基本概念 1.1 Android简介         2007年11月,Google推出移动操作系统Android,并宣称Android是首个为移动终端打造的真正开放和完整的移动操作系统.自此,基于And

ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件

转自:http://blog.csdn.net/arcgis_mobile/article/details/8263283 ArcGIS Runtime sdk for Android为我们提供了丰富的事件监听器,本节将主要介绍我们经常使用的监听器,并且介绍通过这些监听器可以实现哪些功能,在下面的监听器中只有MapOnTouchListener是类,其他皆为接口类型,如图所示: 1.1 MapOnTouchListener MapOnTouchListener是MapView最为重要的监听器之一

ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置

原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8113948   2.开发环境配置 2.1 系统要求 1)      支持的操作系统 A.      Windows XP(32位).Vista(32/64位).Windows 7(32/64位) B.      Mac

ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map

原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8124005 通过上面章节,我们已经了解如何配置一个ArcGIS Runtime for Android开发环境,下面我们将介绍如何使用Eclipse创建一个ArcGIS移动项目Hello W