问题:
在ArcMap中,菜单Insert下Data Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Frame,并且这些Data Frame可以方便切换,
但是在AE开发中,MapControl无法实现此效果,需要特殊控制(如何控制?)还是无法实现?
易智瑞(中国)信息技术有限公司客户与合作伙伴支持部 石羽 回复:
ArcMap中Toc窗体实际仅和Pagelayout窗体进行绑定,切换窗体时并没有切换绑定关系。
Map窗体与Pagelayout窗体同步有很多实现方法,ArcMap中采用的方法没有公开,您可自行研究。
这样确实可以解决此问题Toc窗体显示Pagelayout窗体的多个dataframe,MapControl不和Toc窗体绑定,这样切换视图时Toc窗体也不会变化的(MapControl只可以显示一个dataframe)
这时只需要增加其他几项控制就可以了
1.MapControl, Pagelayout 显示内容保持一致。
这个可以通过硬拷贝的方法,可以参考安装目录 Program FilesArcGISDeveloperKitSamplesNETEnginePageLayoutControlCopyFocusMap这个例子
2.实现不同dataframe切换问题,类似ArcMap右键菜单Activate
利用IMapDocument.Map(mapIndex )来实现
3.实现新增dataframe功能
pGraphicsContainer = axPageLayoutControl1.ActiveView.GraphicsContainer;
pActiveView = axPageLayoutControl1.ActiveView;
pMap = axPageLayoutControl1.ActiveView.FocusMap;
IMapFrame pMapFrame=new MapFrameClass();
IEnvelope pMapExt= new EnvelopeClass();
pMapFrame.Map = pMap;
pMapExt.PutCoords( pActiveView.XMin, pActiveView.YMin, pActiveView.XMax, pActiveView.YMax);
IElement pMapElement;
IGeometry pGeoExt;
pMapElement = pMapFrame as IElement;
pGeoExt = pMapExt;
pMapElement.Geometry = pGeoExt;
pGraphicsContainer.AddElement(pMapElement, 1);
axPageLayoutControl1.Refresh();
4.实现删除dataframe功能
pActiveView = axPageLayoutControl1.PageLayout as IActiveView ;