关于Engine中的元素(ELEMENT)

我们都知道,在ArcMap中,有DataView和LayoutView两种视图,基本上相当于Engine中的MapControl以及PageLayoutControl,在ArcMap中在这两种视图中的元素(Element)是不属于一种体系的,可以通过如下操作进行验证:

1:切换到DataView,添加一个元素(例如在Insert菜单下,选择Text添加一个TextElement),再切换到LayoutView视图下,使用Select Element工具(黑色箭头,也就是默认的工具),无法选中该Element

2:切换到LayoutView,添加一个元素(例如在Insert菜单下,选择Text添加一个TextElement),再切换到DataView视图下,发现该元素不再显示。

所以得到结论,两个视图下,添加的Element是添加到了不同的地方。

 

在Engine下也是一个道理,拿这样一个MXD文件为例,该文件在ArcMap的DataView和LayoutView两个视图下分别添加了一个TextElement(假设DataView下添加的Element名为DE,LayoutView下添加的Element名为LE),那么:

1:用Engine中的MapControl载入该MXD文件,发现只能看到DE,LE无法看到,可以用如下的代码取到该DE,但无法取到LE:

IGraphicsContainer pGraphicsContainer2 = (IGraphicsContainer)this.axMapControl1.Map.BasicGraphicsLayer; pGraphicsContainer2.Reset(); IElement tmpElement = pGraphicsContainer2.Next();

 

2:用Engine中的PageLayoutControl载入该MXD文件,发现两个Element均可以看到,但使用默认的SelectElement工具无法选中DE,可以使用如下代码取到LE:

IGraphicsContainer pGraphicsContainer = (IGraphicsContainer)axPageLayoutControl1.PageLayout; pGraphicsContainer.Reset(); IElement tmpEle = null; while ((tmpEle = pGraphicsContainer.Next()) != null) { if (tmpEle is ITextElement ) { } }

可以用如下代码取到DE:

IGraphicsContainer pGraphicsContainer2 = (IGraphicsContainer)axPageLayoutControl1.ActiveView.FocusMap.BasicGraphicsLayer; pGraphicsContainer2.Reset(); IElement tmpElement = pGraphicsContainer2.Next();

你可能感兴趣的:(null,insert,工具)