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