您的位置:首页 > 编程语言

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

2013-10-30 11:40 357 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐