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);
        }
View Code

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);
        }
View Code

转自:http://blog.csdn.net/u011116642/article/details/13624299

posted @ 2017-12-19 13:32  ParanoiaApe  阅读(796)  评论(0)    收藏  举报