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