您的位置:首页 > 产品设计 > UI/UE

ArcEngine添加指北针、比例尺、图例(注意UID值)

2017-09-15 08:40 2121 查看
    指北针

C#代码  


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

            //设置MapSurroundFrame中指北针的点符号  

            IMapSurround mapSurround = mapSurroundFrame.MapSurround;  

            IMarkerNorthArrow markerNorthArrow = mapSurround as IMarkerNorthArrow;   

            IMarkerSymbol markerSymbol = markerNorthArrow.MarkerSymbol;  

            markerSymbol.Size = 18;  

            markerNorthArrow.MarkerSymbol = markerSymbol;  

            //QI,确定mapSurroundFrame的位置  

            IElement element = mapSurroundFrame as IElement;  

            IEnvelope envelope = new EnvelopeClass();  

            envelope.PutCoords(0.2, 0.2, 5, 5);  

            element.Geometry = envelope;  

            //使用IGraphicsContainer接口添加显示  

            container.AddElement(element, 0);  

            activeView.Refresh();  

 }  

 

   比例尺

C#代码  


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

   }  

 

   图例

C#代码  


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

 }  

    指北针

C#代码  


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

            //设置MapSurroundFrame中指北针的点符号  

            IMapSurround mapSurround = mapSurroundFrame.MapSurround;  

            IMarkerNorthArrow markerNorthArrow = mapSurround as IMarkerNorthArrow;   

            IMarkerSymbol markerSymbol = markerNorthArrow.MarkerSymbol;  

            markerSymbol.Size = 18;  

            markerNorthArrow.MarkerSymbol = markerSymbol;  

            //QI,确定mapSurroundFrame的位置  

            IElement element = mapSurroundFrame as IElement;  

            IEnvelope envelope = new EnvelopeClass();  

            envelope.PutCoords(0.2, 0.2, 5, 5);  

            element.Geometry = envelope;  

            //使用IGraphicsContainer接口添加显示  

            container.AddElement(element, 0);  

            activeView.Refresh();  

 }  

 

   比例尺

C#代码  


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

   }  

 

   图例

C#代码  


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

 }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: