AE开发学习记录之状态栏添加

Arcgis Engine 中状态栏的添加

一、添加控件       

        状态栏用于显示当前程序的活动状态,一般在程序的底部,控件名为StatusStrip。添加完控件以后,在控件属性中选择Item项中的添加StatusLabel,分别为:MessageLabel、Blank、ScaleLabel、coordinateLabel。分别代表含义如下:

序号

Name 属性

Text 属性

Spring 属性

说明

1

MessageLabel

就绪

False

当前所用工具信息

2

Blank

True

占位

3

ScaleLabel

比例尺

False

当前比例尺

4

CoordinateLabel

当前坐标

False

当前坐标

        注:Blank是一个空白的标签,用于占一个位置来调整4个标签之间的间距。Spring 属性表示可以按状态栏剩余空间自动伸缩。     

    添加StatusLabel,如图1。

图1(a)

       

图1(b)

图1(c)


二、添加处理函数

1、ToolBarControl鼠标滑动响应函数

  private void axToolbarControl1_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IToolbarControlEvents_OnMouseMoveEvent e)
        {
            int index = axToolbarControl1.HitTest(e.x, e.y, false); //
            if (index != -1)
            {
                ESRI.ArcGIS.Controls.IToolbarItem toolBarItem = axToolbarControl1.GetItem(index);
                MessageLabel.Text = toolBarItem.Command.Message;
            }
            else
            {
                MessageLabel.Text = "就绪";
            }
        }

2、mapControl鼠标滑动响应函数

  private void mainMapControl_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e)
        {
            ScaleLabel.Text = "比例尺1:" + ((long)this.mainMapControl.MapScale).ToString();
            CoordinateLabel.Text = "当前坐标 X=" + e.mapX.ToString() + " Y = " + e.mapY.ToString() + " " + sMapUnits; 
        }


运行后细心的你可能会发现,当前坐标的后面的坐标单位为“ esriUnknownUnits ”或“ esriMeters ”之类,即系统在正常单位的前面加上了“ esri ”,追求完美的我们自然看得不舒服。那就进行简单的替换吧。

首先添加一个String 类型的变量,用于存储当前单位名称。

 private string sMapUnits;//记录坐标单位

然后,编辑mapReplaced响应函数

3、mapReplaced响应函数

private void mainMapControl_OnMapReplaced(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent e)
        {
            //修改坐标显示的单位名称
           ESRI.ArcGIS.esriSystem.esriUnits mapUnits = mainMapControl.MapUnits;

            switch (mapUnits)
            {

                case ESRI.ArcGIS.esriSystem.esriUnits.esriCentimeters:

                    sMapUnits = "Centimeters";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriDecimalDegrees:

                    sMapUnits = "Decimal Degrees";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriDecimeters:

                    sMapUnits = "Decimeters";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriFeet:

                    sMapUnits = "Feet";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriInches:

                    sMapUnits = "Inches";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriKilometers:

                    sMapUnits = "Kilometers";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriMeters:

                    sMapUnits = "Meters";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriMiles:

                    sMapUnits = "Miles";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriMillimeters:

                    sMapUnits = "Millimeters";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriNauticalMiles:

                    sMapUnits = "NauticalMiles";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriPoints:

                    sMapUnits = "Points";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriUnknownUnits:

                    sMapUnits = "Unknown";

                    break;

                case ESRI.ArcGIS.esriSystem.esriUnits.esriYards:

                    sMapUnits = "Yards";

                    break;

            }

完成以后,运行界面如下:

--------------------------------------------------------------end----------------------------------------------------------


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值