ESRI.ArcGIS.Carto.IMapSurroundFrame

本文介绍IMapSurroundFrame接口,用于访问和控制地图环绕元素,如指北针、比例尺和图例。通过该接口,可以获取或更新地图框架及环绕对象属性。

提供对控制地图环绕元素界面的成员的访问。

何时使用

IMapSurroundFrame是MapSurroundFrame对象的默认接口。使用这个接口来获取或更新存储在帧中的环绕对象(指北针、比例尺条或图例),或者当您想要获取或更新与环绕相关联的MapFrame时。

成员

 成员描述
 Background此元素使用的框架背景。
 BorderFrame border used by this element.
 DraftMode指示此元素是否处于草稿模式,即提速。
 MapFrame与这个对象的地图相关的地图的框架元素环绕。
 MapSurround由这个框架元素显示的地图环绕。
 Object由该元素构成的对象。
 Thumbnail这个元素的小位图表示。

继承的接口

接口描述
IFrameElement提供对控制框架元素对象的成员的访问。

实现IMapSurroundFrame框架的类

描述
MapSurroundFrame用于显示地图包围的图形元素。

创建方法

IMapSurroundFrame pMapSurroundFrame = new MapSurroundFrameClass();  //创建地图周围元素对象
pMapSurroundFrame.MapFrame = pMapFrame;  //指定地图框架

 

以下是添加指北针、比例尺、图例、文本等地图要素的具体完整代码示例(以C#和ArcEngine为例): ### 添加比例尺 ```csharp using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.esriSystem; public void AddScalebar(IPageLayout pageLayout) { IGraphicsContainer container = pageLayout as IGraphicsContainer; IActiveView activeView = pageLayout as IActiveView; // 获得MapFrame IFrameElement frameElement = container.FindFrame(activeView.FocusMap); IMapFrame mapFrame = frameElement as IMapFrame; // 根据MapSurround的uid,创建相应的MapSurroundFrame和MapSurround UID uid = new UIDClass(); uid.Value = "esriCarto.AlternatingScaleBar"; IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null); // 设置MapSurroundFrame中比例尺的样式 IMapSurround mapSurround = mapSurroundFrame.MapSurround; IScaleBar markerScaleBar = ((IScaleBar)mapSurround); markerScaleBar.LabelPosition = esriVertPosEnum.esriBelow; markerScaleBar.UseMapSettings(); // QI,确定mapSurroundFrame的位置 IElement element = mapSurroundFrame as IElement; IEnvelope envelope = new EnvelopeClass(); envelope.PutCoords(0.2, 0.2, 1, 2); element.Geometry = envelope; // 使用IGraphicsContainer接口添加显示 container.AddElement(element, 0); activeView.Refresh(); } ``` ### 添加图例 ```csharp using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.esriSystem; private void AddLegend(IPageLayout pageLayout) { IActiveView pActiveView = pageLayout as IActiveView; IGraphicsContainer container = pageLayout as IGraphicsContainer; // 获得MapFrame IMapFrame mapFrame = container.FindFrame(pActiveView.FocusMap) as IMapFrame; // 根据MapSurround的uid,创建相应的MapSurroundFrame和MapSurround UID uid = new UIDClass(); uid.Value = "esriCarto.Legend"; IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null); // 设置图例的Title ILegend2 legend = mapSurroundFrame.MapSurround as ILegend2; legend.Title = "地图图例"; ILegendFormat format = new LegendFormatClass(); ITextSymbol symbol = new TextSymbolClass(); symbol.Size = 4; format.TitleSymbol = symbol; legend.Format = format; // QI,确定mapSurroundFrame的位置 IElement element = mapSurroundFrame as IElement; IEnvelope envelope = new EnvelopeClass(); envelope.PutCoords(2, 2, 8, 8); element.Geometry = envelope; // 使用IGraphicsContainer接口添加显示 container.AddElement(element, 0); pActiveView.Refresh(); } ``` ### 添加指北针 ```csharp using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Display; using ESRI.ArcGIS.esriSystem; public void AddNorthArrow(IPageLayout pageLayout) { IGraphicsContainer container = pageLayout as IGraphicsContainer; IActiveView activeView = pageLayout as IActiveView; // 获得MapFrame IFrameElement frameElement = container.FindFrame(activeView.FocusMap); IMapFrame mapFrame = frameElement as IMapFrame; // 根据MapSurround的uid,创建相应的MapSurroundFrame和MapSurround UID uid = new UIDClass(); uid.Value = "esriCarto.MarkerNorthArrow"; IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null); // 设置指北针样式等(可进一步扩展) IMapSurround mapSurround = mapSurroundFrame.MapSurround; // QI,确定mapSurroundFrame的位置 IElement element = mapSurroundFrame as IElement; IEnvelope envelope = new EnvelopeClass(); envelope.PutCoords(8, 8, 9, 9); element.Geometry = envelope; // 使用IGraphicsContainer接口添加显示 container.AddElement(element, 0); activeView.Refresh(); } ``` ### 添加文本 ```csharp using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Display; public void AddText(IPageLayout pageLayout) { IGraphicsContainer container = pageLayout as IGraphicsContainer; IActiveView activeView = pageLayout as IActiveView; ITextElement textElement = new TextElementClass(); textElement.Text = "这是一个文本标注"; ITextSymbol textSymbol = new TextSymbolClass(); textSymbol.Size = 12; textElement.Symbol = textSymbol; IPoint point = new PointClass(); point.PutCoords(5, 5); textElement.Geometry = point; container.AddElement(textElement as IElement, 0); activeView.Refresh(); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值