77范文网 - 专业文章范例文档资料分享平台

ArcGIS Engine+C# 初学者实例代码(6)

来源:网络收集 时间:2019-04-09 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

添加且显示以下信息: ? 当前所用工具信息 ? 当前比例尺 ? 当前坐标

1、添加状态栏项目

在设计视图中,点击窗体中的状态栏,在其属性面板中找到“Items”项,单击其右边的按钮,在下拉框中选择“StatusLabel”,单击“添加按钮”,依次添加四个StatusLabel,依次修改属性参数如下表所示: 序号 1 2 3 4 Name属性 MessageLabel Blank ScaleLabel Text属性 就绪 比例尺 Spring属性 False True False False 说明 当前所用工具信息 占位 当前比例尺 当前坐标 CoordinateLabel 当前坐标 设置好之后如下图所示:

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:\ }

4、显示当前坐标

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

CoordinateLabel.Text = \当前坐标X = \+ \ 按F5编译运行,可以看到,我们的程序已经能够正常工作了。但是细心的你可能会发现,当前坐标的后面的坐标单位为“esriUnknownUnits”或“esriMeters”之类,即系统在正常单位的前面加上了“esri”,追求完美的我们自然看得不舒服。那就进行简单的替换吧。 首先定义个全局坐标单位变量sMapUnits,如下所示: private string sMapUnits; 再Form1_Load函数中进行初始化: sMapUnits = \

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

IMapControlEvents2_OnMapReplacedEvent e) {

esriUnits mapUnits = axMapControl1.MapUnits;

switch (mapUnits) {

case esriUnits.esriCentimeters: sMapUnits = \ break;

case esriUnits.esriDecimalDegrees: sMapUnits = \ break;

case esriUnits.esriDecimeters: sMapUnits = \ break;

case esriUnits.esriFeet: sMapUnits = \ break;

case esriUnits.esriInches: sMapUnits = \ break;

case esriUnits.esriKilometers: sMapUnits = \ break;

case esriUnits.esriMeters: sMapUnits = \ break;

case esriUnits.esriMiles: sMapUnits = \ break;

case esriUnits.esriMillimeters: sMapUnits = \ break;

case esriUnits.esriNauticalMiles: sMapUnits = \ break;

case esriUnits.esriPoints: sMapUnits = \ break;

case esriUnits.esriUnknownUnits: sMapUnits = \ break;

case esriUnits.esriYards: sMapUnits = \

break; } }

5、编译运行

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

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

第五讲 鹰眼的实现

在上一讲中,我们实现了状态栏的相关信息显示,在这一讲中我们将要实现鹰眼功能。 所谓的鹰眼,就是一个缩略地图,上面有一个矩形框,矩形框区域就是当前显示的地图区域,拖动矩形框可以改变当前地图显示的位置,改变矩形框的大小,可以改变当前地图的显示区域大小,从起到导航的作用。鹰眼是地图浏览中常用的功能之一。

关于鹰眼的实现方式,最常用的是用一个MapControl控件显示地图全图,并在上面画一个红色矩形框表示当前地图的显示范围,并实现鹰眼MapControl与主窗体的MapControl互动。本讲最终效果如下所示:

图1 鹰眼效果

1、添加鹰眼控件

由于本教程在第一讲中没有预先考虑到鹰眼所放的位置,故我们要先稍微调整一下程序框架,并添加一个MapControl用于显示鹰眼。

在本教程中,我们将鹰眼放在图层控件的下方,调整方法如下:

(1)在设计视图中,选择tabControl1控件,即放图层和属性的那个容器,将其Dock属性设为None,并用鼠标拖拽将其缩小。把工具箱中的SplitContainer控件拖到窗体的左窗格,即放在tabControl1控件的旁边。并将其Orientation属性设置为Horizontal。

(2)选中tabControl1控件,按Ctrl+X剪切,再选中刚才粘贴到SplitContainer2的Panel1中,如图2所示。操作完成后效果如图3所示。

图2

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ArcGIS Engine+C# 初学者实例代码(6)在线全文阅读。

ArcGIS Engine+C# 初学者实例代码(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/581879.html(转载请注明文章来源)
上一篇:医学遗传学习题
下一篇:面相学
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: