博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在.net 2005 环境中开发ArcMap工具条
阅读量:4317 次
发布时间:2019-06-06

本文共 2314 字,大约阅读时间需要 7 分钟。

引子

最近因为要做一些比较复杂的专业分析,所以想尝试做做类似Extension的东西,但不想搞得太复杂,所以先用VBA写了几个Button对应的模块,然后再定制一个工具条,将Button放置在其中。总感觉不太专业,因此就想用Vb.net试试看,发觉并不难,记下过程供日后参考。

一、准备工作

1、用1,2天的时间查阅了相关资料,主要看比较几种开发语言的,便于选择。从个人情况和ArcGIS版本考虑,相中VB.net in VS.net 2005。

2、ArcGIS 9.2。记得安装ArcGIS Desktop Development Kit for .Net(不知道写对没,:))。

3、熟悉了一下VS.net 2005 的开发环境。(大概有3、4年没有用过.Net了,还好,就像大姑娘化了不同的装,人还是那个人,;))

4、其实已经用VBA做的差不多了,只是VBA不太好用而已,就当升级开发,为今后的工作打铺垫。

二、生成工具条类

  首先,建立一个工程,取名为RCMLib。过程参照http://edndoc.esri.com/arcobjects/9.2/NET/01c01659-cdf8-4579-9c87-2b965e872d84.htm中建立工程的部分,后面添加Command的部分不要。

   第二步,添加一个类,取名RCMToolbar。过程是打开添加类窗口,在右边的窗口中选择“ArcGIS Class”,命名“RCMToolbar.vb",点击"添加",弹出”Add ArcGIS Class Wizard"的对话框,在右边的第一个下拉框中选"All",第二个下拉框中选"Application Framework",在下面的列表框中找到“Toolbar”,OK,点击“Next”。在接下来的“Categories"中选择ArcMap Command”(也可以根据需要选其它的),点击“Next”。接下来,点击“Finish”。

  第三步,基本修改1, 添加工具条的标题和名称。打开新类代码。找到属性Caption的函数,添加语句“ return "RCM Toolbar"";找到属性Name的函数,添加语句”Return "RCMToolbar"“。Caption是显示在工具条窗口上和ArcMap的Customize对话框中的字符串,Name是类的唯一名称。生成.dll后,在ArcMap中就可以添加该工具条了。

 三、添加按钮

  第一步,添加一个类,命名为Button1。过程基本和添加RCMToolbar类差不多,不同是选择“Application Framework”的“Command”。

  第二步,向工程添加一个bmp文件(button1.bmp),作为Button1上显示的图像。接下来修改几个地方。首先,为Button1添加两个私有成员:

        

ContractedBlock.gif
ExpandedBlockStart.gif
Code
Private m_bitmap As Bitmap
Private m_hBitmap As IntPtr

  然后 ,在New()函数中,读入button1.bmp:  

ContractedBlock.gif
ExpandedBlockStart.gif
Code
Public Sub New()
        
MyBase.New()
        m_bitmap 
= New System.Drawing.Bitmap((Me.GetType.Assembly.GetManifestResourceStream("reit.hzau.RCMLib.Button1.bmp")))
        
If Not (m_bitmap Is NothingThen
            m_bitmap.MakeTransparent(m_bitmap.GetPixel(
11))
            m_hBitmap 
= m_bitmap.GetHbitmap()
        
End If
    
End Sub

  修改Bitmap属性:

ContractedBlock.gif
ExpandedBlockStart.gif
Code
Public ReadOnly Property Bitmap() As Integer Implements ESRI.ArcGIS.SystemUI.ICommand.Bitmap
        
Get
            
Return m_hBitmap.ToInt32()
        
End Get
    
End Property

    第三步,将Button1连接到RCMToolbar。修改RCMToolbar中的GetItemInfo和ItemCount:

ContractedBlock.gifCode

ExpandedBlockStart.gif
Public Sub GetItemInfo(ByVal pos As IntegerByVal itemDef As ESRI.ArcGIS.SystemUI.IItemDef) Implements ESRI.ArcGIS.SystemUI.IToolBarDef.GetItemInfo
        
Select Case pos
            
Case 0
                itemDef.ID 
= "reit.hzau.RCMLib.Button1"
                itemDef.Group 
= False
        
End Select
    
End Sub
    
Public ReadOnly Property ItemCount() As Integer Implements ESRI.ArcGIS.SystemUI.IToolBarDef.ItemCount
        
Get
            
Return 1
        
End Get
    
End Property

    编译工程。启动ArcMAP后,在Customize...中选择新建的工具条,即可。

转载于:https://www.cnblogs.com/sqwang/archive/2008/12/28/1363819.html

你可能感兴趣的文章
poj 1222 EXTENDED LIGHTS OUT(位运算+枚举)
查看>>
进程和线程概念及原理
查看>>
Lucene、ES好文章
查看>>
android 生命周期
查看>>
jquery--this
查看>>
MySQL 5.1参考手册
查看>>
TensorFlow安装流程(GPU加速)
查看>>
OpenStack的容器服务体验
查看>>
BZOJ 1066 蜥蜴(网络流)
查看>>
提高批量插入数据的方法
查看>>
Linux重启Mysql命令
查看>>
前端模块化:RequireJS(转)
查看>>
应用程序缓存的应用(摘抄)
查看>>
jQuery基础知识,很赞的!!!
查看>>
[Codevs] 线段树练习5
查看>>
Amazon
查看>>
component-based scene model
查看>>
Echart输出图形
查看>>
hMailServer搭建简单邮件系统
查看>>
从零开始学习jQuery
查看>>