ArcGIS Engine基础(22)之布局视图工具类(更换打印模板)

    public override void OnClick()
        {
            IMapDocument newDocument;
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Title = "";
            openFileDialog.Filter = "Map Documents (*.mxd;*.mxt)|*.mxd;*.mxt";
            openFileDialog.RestoreDirectory = true;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                newDocument = new MapDocumentClass();
                newDocument.Open(filePath, "");

                IPageLayout tempPageLayout = newDocument.PageLayout;
                IPage tempPage = tempPageLayout.Page;
                IPage currentPage = m_HookHelper.PageLayout.Page;

                //替换页面尺寸和单位
                currentPage.Units = tempPage.Units;
                currentPage.Orientation = tempPage.Orientation;
                double width;
                double height;
                tempPage.QuerySize(out width, out height);
                currentPage.PutCustomSize(width, height);

                //删除当前Layout中的所有elements
                IMapFrame pMapFrame=null;
                IGraphicsContainer graphicsContainer = m_HookHelper.ActiveView as IGraphicsContainer;
                graphicsContainer.Reset();
                IElement element = graphicsContainer.Next();
                while (element != null)
                {
                    if (element is IMapFrame)
                    {
                        pMapFrame = element as IMapFrame;
                        element = graphicsContainer.Next();
                    }
                    else
                    {
                        graphicsContainer.DeleteElement(element);
                        graphicsContainer.Reset();
                        element = graphicsContainer.Next();
                    }
                }

                //添加模板中的所有元素
                IGraphicsContainer tempGraphicsContainer = tempPageLayout as IGraphicsContainer;
                tempGraphicsContainer.Reset();
                IArray pArray = new ArrayClass();
                element = tempGraphicsContainer.Next();
                while (element != null)
                {
                    if (element is IMapFrame)
                    {
                        (pMapFrame as IElement).Geometry = element.Geometry;
                        pMapFrame.Map = m_HookHelper.FocusMap;
                    }
                    else
                    {
                        graphicsContainer.AddElement(element, 0);
                    }
                    element = tempGraphicsContainer.Next();
                }
                graphicsContainer.Reset();
                m_HookHelper.ActiveView.Refresh();
            }
        }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xizhjxust_GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值