AE二次开发,通过代码向axPageLayout控件,插入图例和指北针的方法

1.插入图例的方法如下:

 

         /// <summary>
        /// 给页面布局控件添加图例
         /// </summary>
        /// <param name="pageLayout"></param>
        public static void InsertLegend(AxPageLayoutControl axPageLayout)
        {
          
            IElement pElement = axPageLayout.FindElementByName("Legend");
            if (pElement != null)
            {
                axPageLayout.ActiveView.GraphicsContainer.DeleteElement(pElement);  //删除已经存在的图例
            }
            IPageLayout pPageLayout = axPageLayout.PageLayout;
            IGraphicsContainer pGraphicsContainer = pPageLayout as IGraphicsContainer;
            IActiveView pActiveView = pPageLayout as IActiveView;
            UID pID = new UIDClass();
            pID.Value = "esriCore.Legend";

            IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pActiveView.FocusMap) as IMapFrame;
            if (pMapFrame == null) return;
            IMapSurroundFrame pMapSurroundFrame = pMapFrame.CreateSurroundFrame(pID, null);
            if (pMapSurroundFrame == null) return;
            //设置图例范围
            IEnvelope pEnv = new EnvelopeClass();
            pEnv.PutCoords(2, 2, 6, 6);
            pElement = (IElement)pMapSurroundFrame;
            pElement.Geometry = pEnv;
            pMapSurroundFrame.MapSurround.Name = "Legend";

            ILegend legend = (ILegend)pMapSurroundFrame.MapSurround;
            legend.Title = "图例";
            //让标题居中显示
            ITextSymbol txtSymbol = new TextSymbolClass();
            txtSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;
            txtSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVABottom;
            legend.Format.TitleSymbol = txtSymbol;
            legend.Refresh();
            pGraphicsContainer.AddElement(pElement, 0);
        }

2.插入指北针的方法

        /// <summary>
        /// 给页面布局控件添加指北针
         /// </summary>
        /// <param name="pageLayout"></param>
        public static void InsertNorth(AxPageLayoutControl axPageLayout)
        {
            IElement pElement = axPageLayout.FindElementByName("MarkerNorthArrow");
            if (pElement != null)
            {
                axPageLayout.ActiveView.GraphicsContainer.DeleteElement(pElement);  //删除已经存在的图例
            }
            IPageLayout pPageLayout = axPageLayout.PageLayout;
            IGraphicsContainer pGraphicsContainer = pPageLayout as IGraphicsContainer;
            IActiveView pActiveView = pPageLayout as IActiveView;
            UID pID = new UIDClass();
            pID.Value = "esriCore.MarkerNorthArrow";

            IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pActiveView.FocusMap) as IMapFrame;
            if (pMapFrame == null) return;
            IMapSurroundFrame pMapSurroundFrame = pMapFrame.CreateSurroundFrame(pID, null);
            if (pMapSurroundFrame == null) return;
            IEnvelope pEnv = new EnvelopeClass();
            pEnv.PutCoords(2, 2, 6, 6);
            pElement = (IElement)pMapSurroundFrame;
            pElement.Geometry = pEnv;
            pMapSurroundFrame.MapSurround.Name = "MarkerNorthArrow";
            INorthArrow pNorthArrow = pMapSurroundFrame.MapSurround as INorthArrow;
            pGraphicsContainer.AddElement(pElement, 0);
        }



 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值