liutingxiang的个人博客分享 http://blog.sciencenet.cn/u/liutingxiang

博文

ArcGIS Engine二次开发学习(4)地图控件和布局控件联动

已有 3991 次阅读 2018-4-10 10:47 |个人分类:地理信息系统二次开发|系统分类:教学心得

 所要实现的功能:

(1)当在TabControl中点击“地图制图“时,MapControl中的地图显示传递到PageLayoutControl;

(2)MapControl中的数据发生变化,PageLayoutControl要同步变化。

(3)MapControl中的数据显示范围发生变化,PageLayoutControl也要同步变化。


步骤:

(1)定义两个方法,CopyAndWriteMap(),repGeoMap()。

(2)定义TabControl选择PageLayoutControl的事件,如果选择了PageLayoutControl,就调用上述方法,否则不调用。

(3)控件的事件代码中调用定义的两个方法。


代码如下:

public void CopyAndWriteMap()
{
     IObjectCopy objectCopy = new ObjectCopyClass();
     object toCopyMap = axMapControl1.Map;
     object copiedMap = objectCopy.Copy(toCopyMap);// 把axMapControl1.Map定义为toCopyMap,然后复制到copiedMap中
     object toOverwriteMap = axPageLayoutControl1.ActiveView.FocusMap;
     objectCopy.Overwrite(copiedMap, ref toOverwriteMap);
     axPageLayoutControl1.ActiveView.Refresh();
}
public void repGeoMap()
{
     IActiveView pActiveView = axPageLayoutControl1.ActiveView.FocusMap as IActiveView;
     IDisplayTransformation displayTransformation = pActiveView.ScreenDisplay.DisplayTransformation;
     
     displayTransformation.VisibleBounds = axMapControl1.Extent;
     axPageLayoutControl1.ActiveView.Refresh();
     CopyAndWriteMap();
}
bool strUnion = false;
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    switch (this.tabControl1.SelectedIndex)
    {
       case 0:
           strUnion = false;
           break;
       case 1:
           strUnion = true;
           CopyAndWriteMap();
           break;
       default:
           break;
     }
}
private void axMapControl1_OnAfterScreenDraw(object sender, IMapControlEvents2_OnAfterScreenDrawEvent e)
{
     if (strUnion == false)
        return;
     repGeoMap();
}

private void axMapControl1_OnViewRefreshed(object sender, IMapControlEvents2_OnViewRefreshedEvent e)
{
     if (strUnion == false)
       return;
     CopyAndWriteMap();
}
private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
{
     TbGeoMap();
     if (strUnion == false)
        return;
     CopyAndWriteMap();
}




https://blog.sciencenet.cn/blog-3373120-1108341.html

上一篇:ArcGIS Engine二次开发学习(3)鹰眼功能
下一篇:ArcGIS Engine二次开发学习(5)TOC控件
收藏 IP: 121.69.12.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-27 11:24

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部