ArcGIS Desktop开发框架快速搭建【一】

ArcGIS对基于桌面产品Desktop开发提供了两种方式:Desktop Add-insExtending ArcObjectsAdd-Ins开发方式是最大化使用桌面产品现有的功能,安装部署方便;但在AO扩展、界面定制上不如Extending方式强大、灵活。本文主要介绍如何使用donet工程提供的Extending ArcObjects模板构建一个Desktop开发框架

 

模板工程建立

 

    创建 Windows ApplicationDesktop)工程

 

 

添加使用的ArcGIS类库,下一步继续。这一步在此处可以跳过,在代码编写过程中再添加用到的类库。

 

 

勾选工程所需的ArcGIS产品级别及相关的功能扩展。ArcGIS桌面产品开发提供了ArcVIewArcEditorArcInfo三个产品级别,如下图选择了ArcInfo;在Extensions列表中可以选择程序所使用的ArcGIS扩展,如果工程要做三维开发、网络分析功能开发则需要勾选3DAnalystNetwork Analyst,如下图所示。

 

 

启动ArcMap进程

 

在启动系统登录前可先做个用户验证,在验证过程中启动ArcMap进程。

 

 

 

具体代码如下:

 

       privatevoid btnLogin_Click(object sender, EventArgs e)

 

       {

 

           //用户登录验证过程

 

           //*************

 

           //***************

 

           newProjectStart().ProjectStart();

 

           this.Hide();

 

           System.Environment.Exit(0);

 

       }

 

 

 

    public classProjectStart

 

    {

 

        public void StartProject ()

 

        {

 

            //启动ArcMap进程

 

            IDocumentdoc = newMxDocumentClass();

 

            IApplication m_ArcGisApp = doc.Parent;

 

            m_ArcGisApp.Caption = 信息管理系统“;

 

            m_ArcGisApp.Visible =true;

 

        }

 

    }

 

 

 

启动界面如下图所示

 

添加自定义菜单

 

向工程中添加工程类库

 

向新建的类库中添加两个Button按钮cmd1cmd2

 

 

 

重复上面的步骤在添加一个按钮,至此新建的类库中便有了两个按钮cmd1cmd2

 

双击打开其中一个按钮的代码文件,如打开cmd1.cs,如下图所示

 

其中,GuidProgId是系统自动建立的,保持默认不去修改;而,m_categorym_captionm_messagem_tooltipm_name可根据需要自行修改。

 

下面要做的是在启动ArcMap时将这些按钮添加的ArcMap界面上

 

       publicvoid StartProject()

 

       {

 

            IDocument doc = newMxDocumentClass();

 

            IApplication m_ArcGisApp = doc.Parent;

 

            ICommandBar cmdBar = (ICommandBar)doc.CommandBars.Find(“Main menu, false, false);

 

            //添加自定义按钮

 

            UID cmdUid = newUIDClass();

 

            object bj = null;

 

            cmdBar = cmdBar.CreateMenu(自定义1, refobj);

 

            cmdUid.Value = “{d40ae57e-0ca9-4e26-a78a-58eade156816};

 

            cmdBar.Add(cmdUid, ref obj).Style. = esriCommandStyles.esriCommandStyleIconAndText;

 

            cmdUid = newUIDClass();

 

            cmdUid.Value = “{27f74b3b-fa26-4389-88d8-2495a13ca1a1};

 

            cmdBar.Add(cmdUid, ref obj).Style. = esriCommandStyles.esriCommandStyleIconAndText;

 

            m_ArcGisApp.Caption = 信息管理系统;

 

            m_ArcGisApp.Visible = true;

 

       }

 

运行界面如下:

 

清除ArcMap原有菜单

 

    很多情况下,系统的界面是根据我们实际的需求重新定制的,所以需要我们将原有的菜单、工具条全部清除掉。在程序中添加下面代码即可完成清除所有的菜单、按钮。

 

IDocumentdoc = newMxDocumentClass();

 

IApplicationm_ArcGisApp = doc.Parent;

 

doc.CommandBars.HideAllToolbars();

 

intpcount = cmdBar.Count;

 

//清理菜单

 

 for (int i = pcount-1;i>-1 ; –i)

 

 {

 

     ICommandItem p = cmdBar[i];

 

     p.Delete();

 

 }

 

 doc.CommandBars.HideAllToolbars();

 

还有些时候,我们要实现的功能ArcMap已经自带,这样我们在定制界面的时候可以保留这部分功能,减少系统开发工作量。

 

    保留文件菜单、视图菜单内容,代码如下

 

IDocumentdoc = newMxDocumentClass();

 

IApplicationm_ArcGisApp = doc.Parent;

 

doc.CommandBars.HideAllToolbars();

 

intpcount = cmdBar.Count;

 

//清理菜单

 

 for (int i = pcount-1;i>-1 ; –i)

 

 {

 

     ICommandItem p = cmdBar[i];

 

    if (p.Name != “View_Menu && p.Name != “File_Menu)

 

     p.Delete();

 

 }

 

 doc.CommandBars.HideAllToolbars();

至此一个ArcGISDesktop开发框架搭建完毕,至于界面上有哪些按钮、菜单、工具条等需要根据实际的系统开发需求来规划、定制。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值