ArcEngine 二次开发实习初级讲义
Enabled:设置控件是否可用,这与属性表中的Enabled属性在功能上是相同的。 Enable OLE Drop Event:设置控件是否响应拖拽事件,例如:直接将地图拖入MapControl Preview in Design Mode: 设置是否在控件设计模式下显示地图。 Arrow Key Intercept:设置是否容许控件响应键盘 Tooltip Style:设置地图Tooltip的样式(ToolTip是地图上的一种动态标注。) Map Document:用于载入ArcMap产生的MXD文件,如果您的文件时MXD类型的,可以选择这种方式载入地图,或代码在程序中载入。关于后一种方法会在《通过代码载入图层》小节中加以介绍。 选择地图载入的方式,有两种方式载入地图,第一种是将地图数据载入到MapControl中,这种方式下,地图数据在生成程序时被载入到内存中,之后所有对地图的操作,在没有保存的前提下对原始的地图文件没有影响。 第二种方式,通过连接方式载入地图,表示对于地图的操作会影响到原始数据。在MapControl中只是保持着与地图数据的链接。 Map选项卡
- 11 -
ArcEngine 二次开发实习初级讲义
Scale:显示地图比例尺 Reference Scale:地图参考比例尺 Rotation:设置地图的旋转角度 Units:设置单位 Spatial Reference:设置或更改地图的空间参考。 Initial Map:初始化地图 从左到右按钮的功能依此是: 加载图层(图层可以是单图层文件,可以使GoeDatabase,也可以是Shapefile) 向上移动图层、向下移动图层、删除图层、查看图层属性信息。 Color选项卡主要对地图颜色进行相关的设置,但通常关于地图的配色我们是通过代码来完成的,这个选项卡很少涉及。
Picture 选项卡主要是对控件中的相关图片资源进行管理,例如鼠标样式等。
2. PageLayoutControl
- 12 -
ArcEngine 二次开发实习初级讲义
对于PageLayoutControl控件的属性页而言,唯一与MapControl不同的是他存在page选项卡,该选项卡提供了页面大小,页面宽度和高度等修改的窗口。
MapControl和PageLayoutControl不仅可以读地图文件,同时也能写地图文件(*.mxd)。两个控件都实现了IMxdContents接口,使得MapDocument对象能将MapControl和PageLayoutControl能够将其中的内容写入地图文件。
辅助方法(Helper Methods),例如MapControl中的TrackRectangle(鼠标绘制矩形),TrackPolygon(鼠标绘制多边形),TrackLine(鼠标绘制多段线)和TrackCircle(绘制弧形)方法能够在视口中绘制出可擦出的图形。VisibleRegion属性能够改变MapControl中显示区域的形状。辅助方法,例如PageLayoutControl中的FindElementByName和LocateFrontElement方法能帮助开发者组织元素,同时Printer和PrinterPageCount属性能够协同PrintPageLayout方法完成打印输出任务。 2.2.2 TOCControl
TOCControl需要与一个“伙伴控件”一同工作。“伙伴控件”可以是一个MapControl,PageLayoutControl,ReaderControl,SceneControl或者GlobeControl。“伙伴控件”能够在设计的时候通过TOCControl的属性页设置(在支持属性页的编译环境中),或者在程序运行中通过SetBuddyControl方法来设置。对每个TOCControl,“伙伴控件”都实现了ITOCBuddy接口。TOCControl利用“伙伴控件”来显示交互性的树结构目录,包括“伙伴控件”的地图、图层、符号等内容,并且保持树结构的内容与“伙伴控件”的内容一致。例如,如果TOCControl以MapControl作为其“伙伴”,则当一个图层从MapControl中移除的时候,这个图层也会同时从TOCControl中移除。同样的,如果终端用户通过交互式的TOCControl设置,取消了某个图层的可见性,则MapControl中的相应图层也会不可见。
- 13 -
ArcEngine 二次开发实习初级讲义
与MapControl不同的是,TOCControl的属性表中包含Buddy Control,如果你已经添加了MapControl,那么在下拉列表中你就会看到它,选择他就可以讲TOCControl与MapControl 绑定。 2.2.3 ToolbarControl
ToolbarControl需要与一个“伙伴控件”一同工作。“伙伴控件”可以是一个MapControl,PageLayoutControl,ReaderControl,SceneControl或者GlobeControl。“伙伴控件”能够在设计的时候通过ToolbarControl的属性页设置(在支持属性页的编译环境中),或者在程序运行中通过SetBuddyControl方法来设置。ToolbarControl包含了与“伙伴控件”的显示相关的一系列的命令(commands),工具(tools),工具控件(tool controls)和菜单(menus)。
对每个ToolbarControl,“伙伴控件”都实现了IToolbarBuddy接口。这个接口是用来设置“伙伴控件”的CurrentTool属性。例如,一个ToolbarControl中包含有一个“PageZoomIn”(页面放大)工具,并且将PageLayoutControl设置为“伙伴”,则当终端用户单击ToolbarControl上的“PageZoomIn”时,“PageZoomIn”将会成为PageLayoutControl的当前工具。“PageZoomIn”工具将查询ToolbarControl以访问其“伙伴控件”(PageLayoutControl)并且作用于PageLayout(页面视图),然后它将提供给终端用户显示和使用鼠标拉框的方法以改变PageLayout的显示范围。
ToolbarControl实现了ArcGIS 中的所有功能,用户可以在不编写一行代码的情况下,轻松构架出一个功能庞大的GIS软件,只要是ArcGIS中含有的功能,你都会在ToolbarControl中找到。但是这些功能都是事先封装好的,如果你想对这些功能进行进一步的扩展,难度很大。所以不要以为有了ToolbarControl 就可以摆脱学GIS二次开发的过程。让我们来看看我们是如何使用ToolbarControl 的。
- 14 -
ArcEngine 二次开发实习初级讲义
在ToolbarControl的属性页中有一个Items的选项卡,通过选项卡中的Add按钮可以添加相应的功能按钮。点击Add,会出现以下对话框。
该对话框包含了很多已经封装好的工具,包括复杂的空间分析功能。双击其中的功能或拖拽,就可以讲该功能添加到ToolBarControl中。需要删除时,在Items中的按钮列表中将功能拖出即可,按钮列表如下图所示:
- 15 -