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

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

模板工程建立

创建 Windows Application(Desktop)工程



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



勾选工程所需的ArcGIS产品级别及相关的功能扩展。ArcGIS桌面产品开发提供了ArcVIew、ArcEditor、ArcInfo三个产品级别,如下图选择了ArcInfo;在Extensions列表中可以选择程序所使用的ArcGIS扩展,如果工程要做三维开发、网络分析功能开发则需要勾选3DAnalyst、Network 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按钮cmd1、cmd2






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


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



其中,Guid、ProgId是系统自动建立的,保持默认不去修改;而,m_category、m_caption、m_message、m_tooltip、m_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开发框架搭建完毕,至于界面上有哪些按钮、菜单、工具条等需要根据实际的系统开发需求来规划、定制。

文章来源:http://blog.csdn.net/sydbc/article/details/17138683

0 个评论

要回复文章请先登录注册