ArcGIS Engine开发之TocControl

时间:2022-04-08 03:25:55

TocControl控件简介

TocControl控件的主要作用是显示当前加载的图层有哪些、采用什么样的符号等,目的是使用户对当前加载的数据有一个总体的把握。与之相关联的伙伴控件有:MapControl,PageLayoutControl,ReaderControl,SceneControl,GlobeControl等。

一、TOCControl与数据视图的关联

关联的方式有两种,一种是代码的绑定,第二种是TOCControl控件的属性表中设置。

属性设置:在General选项卡中选择Buddy中进行关联。

代码绑定:axTOCControl.SetBuddyControl(mainMapControl);

二、图层显示顺序的调整

在应用中,有时需要对图层进行顺序调整,以免放生盖压导致部分图层不能显示,图层顺序的调整也有两种方法:

属性设置:通过属性选项卡General下的复选框Enable Layer Drag and Drop,即可实现图层的拖拽功能。

代码实现:分别在TOCControl控件的OnMouseDown和OnMouseUp两个事件设置,及HitTest()方法;

HitTest()方法的参数如下:

1 Public void HitTest(
3    int X,//当鼠标在TOCControl中按下时,参照TOCControl左上角为原点,以像素为单位,
4    int Y, //同上,返回鼠标的y坐标
5    ref esriTOCControlItem ItemType,//枚举常量
6    ref IBasicMap BasicMap,//绑定MapControl中的IBasicMap对象
7    ref ILayer Layer,//被点击的图层对象
8    ref object Unk,//图例组对象
9    ref object Data);//图例组中图例类的索引,根据索引和图例组可获得特定的图例类

ITOCControl接口的HitTest()方法可以返回TOCControl中点击坐标点处的对象类型ItemType。esriTOCControlItem类型对应的关系如下表:

对象 说明
esriTOCControlItemNone 0 没有对象
esriTOCControlItemMap 1 Map对象
esriTOCControlItemLayer 2 Layer对象
esriTOCControlItemHeading 3 对象的标题
esriTOCControlItemLegendClass 4 LegendClass

 

 

 

 

 

 

 

三、实现思路

1)在TOCControl中,当鼠标点击时即在OnMouseDown事件中,拾取需要调整的图层,当鼠标弹起时即OnMouseUp事件中,获得图层移到位置的图层索引号。

2)使用IMap接口提供MoveLayer方法,将需要调整显示顺序的图层移动目标位置。

3)使用TOCControl的Update()方法,更新TOCControl控件中的图层顺序。