Advertisement

ArcGis Engine 开发

阅读量:

参考博客

AE开发能否实现TOC Control里添加多个Data Frame
IMapDocument interface

ArcGis Engine 中,有AxMapControl,AxPageLayOutControl,MapDocument,DataFrame。
ArcMap中的DataFrame(中文名:数据框(以下用DataFrame)),也就是在ArcMap的->插入->数据框,其实一个MXD文档可以包括多个DataFrame,而这个DataFrame在AE中又叫MapFrame,在像AxMapControl、AxPageLayOutControl这一类控件中也叫Map,而AxMapControl中在某时刻只能有一个Map,所以我们在用AxMapControl.LoadMxFile或AxMapControl.Map=MapDocument.GetMap(i)时,即使我们的MXD有多个Map(或叫DataFrame或叫MapFrame)(以下只称呼其中一个名字)也只有一个被显示,也就是激活状态。
但在AxPageLayOutControl中却可以多个一起显示;当我们将TOC与AxPageLayOutControl关联时,我们用AxPageLayOutControl.LoadMxFile在AxPageLayOutControl中将MXD文件显示时不仅可以多个Map一起显示,而且在TOC中也会将所有的DataFrame显示出来,而TOC与AxMapControl关联时,由于某刻只有一个Map显示,所以TOC中始终只有一个DataFrame。
当我们用MapDocument将某个MXD进行Open后,我们得到的MapDocument中有了所有的Map,但有一点我不理解的是我用”AE开发能否实现TOC Control里添加多个Data Frame“中(4.实现删除dataframe功能)提供的方法,将最后delete改为ADD,始终会报错,提示未将对象引用设置到对象的实例,还望指点。
我们一般不能直接在AxMapControl显示全部的DataFrame,
MapDocument的Open参数也可以是从AxPageLayOutControl中Load的MXD文件,这一操作后我们得到MDX的所有DataFrame, 按照”AE开发能否实现TOC Control里添加多个Data Frame“中的说法,应该可以通过Map窗体与Pagelayout窗体同步,从而实现在AxMapControl中将MXD的所有DataFrame显示(当然不是同时显示)。(注:本人还没做)
我尝试了各种将AxMapControl中添加DataFrame(甚至将AxPageLayOutControl添加成功的例子中将AxPageLayOutControl改为AxMapControl)也没有成功,可能AxMapControl不支持添加DataFrame吧,看来只能将TOC与AxPageLayOutControl绑定了。
附:AxPageLayOutControl添加DataFrame的方法(参考”AE开发能否实现TOC Control里添加多个Data Frame“)

全部评论 (0)

还没有任何评论哟~