AE开发能否实现TOC Control里添加多个Data Frame
2016-04-15 10:43
344 查看
问题:
在ArcMap中,菜单Insert下Data Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Frame,并且这些Data Frame可以方便切换,
易智瑞(中国)信息技术有限公司客户与合作伙伴支持部 石羽 回复:
ArcMap中Toc窗体实际仅和Pagelayout窗体进行绑定,切换窗体时并没有切换绑定关系。
Map窗体与Pagelayout窗体同步有很多实现方法,ArcMap中采用的方法没有公开,您可自行研究。
这样确实可以解决此问题Toc窗体显示Pagelayout窗体的多个dataframe,MapControl不和Toc窗体绑定,这样切换视图时Toc窗体也不会变化的(MapControl只可以显示一个dataframe)
这时只需要增加其他几项控制就可以了
1.MapControl, Pagelayout 显示内容保持一致。
这个可以通过硬拷贝的方法,可以参考安装目录 Program Files\ArcGIS\DeveloperKit\SamplesNET\Engine\PageLayoutControlCopyFocusMap这个例子
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 ;
pMap = pActiveView.FocusMap;
pGC = pActiveView as IGraphicsContainer;
pMF = pGC.FindFrame(pMap) as IMapFrame ;
pGC.DeleteElement(pMF as iElement);
代码仅供参考。
在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 Files\ArcGIS\DeveloperKit\SamplesNET\Engine\PageLayoutControlCopyFocusMap这个例子
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 ;
pMap = pActiveView.FocusMap;
pGC = pActiveView as IGraphicsContainer;
pMF = pGC.FindFrame(pMap) as IMapFrame ;
pGC.DeleteElement(pMF as iElement);
代码仅供参考。
相关文章推荐
- 表单事件,onblur,onfocus,焦点
- 链表
- Centos 6.5 安装oracle
- SpatialHadoop:有效的分析你的空间数据
- java中的23种设计模式
- 2016.04.15
- TP下的session.memcache
- Hash概率问题
- Java技术晋升之路
- jQuery冒泡事件阻止
- 复利计算器评论
- Linux使用笔记
- 二叉树层次遍历
- C#+ AE 注意问题汇总(不断更新)
- MFC线程编程
- 插入排序
- 解决org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'localSessi
- mybatis缓存
- EditPlus配置C#编译及运行环境
- 计算出字符串中出现次数最多的字符是什么,出现了多少次