ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ArcEngine IPageLayout 添加经纬网和公里网

2021-12-04 07:31:38  阅读:155  来源: 互联网

标签:pLineSymbol 网格 new 经纬网 pMapGrid pMeasuredGrid IPageLayout true ArcEngine


http://www.gisall.com/html/52/25952-2932.html

 

向AxPageLayoutControl的PageLayout中添加格网分为两种情况: 添加经纬网   和   添加公里网。

         ///

        /// 为PageLayout对象添加经纬网格

        ///

        ///

        /// 

        public  void CreateGraticuleMapGrid(IPageLayout pPageLayout)

        {

            //获取MapFrame对象

            IActiveView pActiveView = pPageLayout as IActiveView;

            IMap pMap = pActiveView.FocusMap;

            IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;

            IMapFrame. pMapFrame. = pGraphicsContainer.FindFrame(pMap) as IMapFrame;

            IMapGrids pMapGrids = pMapFrame. as IMapGrids;      

            //创建网格对象

 

 

         

            //设置网格线的符号样式

            ICartographicLineSymbol pLineSymbol;

            pLineSymbol = new CartographicLineSymbolClass();           

            pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;

            pLineSymbol.Width = 1;  

            IRgbColor rgbColor = new RgbColor();

            rgbColor.Red = 166;

            rgbColor.Green = 187;

            rgbColor.Blue = 208;

            IColor color = rgbColor as IColor;

            pLineSymbol.Color = color;

            pMapGrid.LineSymbol = pLineSymbol;

            //设置网格的边框样式,为简单边框样式            

            ISimpleMapGridBorder simpleMapGridBorder = new SimpleMapGridBorderClass();           

            ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();

            simpleLineSymbol.Style. = esriSimpleLineStyle.esriSLSSolid;

            simpleLineSymbol.Color = BuildRGB(0, 0, 0);

            simpleLineSymbol.Width = 2;

            simpleMapGridBorder.LineSymbol = simpleLineSymbol as ILineSymbol;          

            pMapGrid.Border = simpleMapGridBorder as IMapGridBorder ;

            pMapGrid.SetTickVisibility(true, true, true, true);

           

            //设置网格的主刻度的样式和可见性

            pMapGrid.TickLength = 15;

            pLineSymbol = new CartographicLineSymbolClass();          

            pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;

            pLineSymbol.Width = 1;

            pLineSymbol.Color = color;

            pMapGrid.TickMarkSymbol = null;  

            pMapGrid.TickLineSymbol = pLineSymbol;

            pMapGrid.SetTickVisibility(true, true, true, true);

            //设置网格的次一级刻度的样式和可见性

            pMapGrid.SubTickCount = 5;

            pMapGrid.SubTickLength = 10;

            pLineSymbol = new CartographicLineSymbolClass();          

            pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;

            pLineSymbol.Width = 0.1;

            pLineSymbol.Color = color;

            pMapGrid.SubTickLineSymbol = pLineSymbol;        

            pMapGrid.SetSubTickVisibility(true, true, true, true);

         

            //设置网格的标签的样式和可见性

            IGridLabel pGridLabel;

            pGridLabel = pMapGrid.LabelFormat;

            pGridLabel.LabelOffset = 15;

           

            stdole.StdFont pFont = new stdole.StdFont();

 

            pFont.Size = 16;

           pMapGrid.LabelFormat.Font = pFont as stdole.IFontDisp;

 

             //设置网格的可见性

            pMapGrid.Visible = true;

            //创建IMeasuredGrid对象

            IMeasuredGrid pMeasuredGrid;

            pMeasuredGrid = pMapGrid as IMeasuredGrid;

            pMeasuredGrid.FixedOrigin = true;

            pMeasuredGrid.XIntervalSize = 0.5; //meridian interval

            pMeasuredGrid.XOrigin = 109; //shift grid 5

            pMeasuredGrid.YIntervalSize = 0.5; //parallel interval

            pMeasuredGrid.YOrigin = 40; //shift grid 5 

           

            //将网格对象添加到地图控件中     

            pMapGrids.AddMapGrid(pMapGrid);

            //刷新地图

            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);

        }

    public void CreateMeasuredGrid(IPageLayout pPageLayout)

        {

            try

            {

                //获取MapFrame对象

                IActiveView pActiveView = pPageLayout as IActiveView;

                IMap pMap = pActiveView.FocusMap;

                IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;

                IMapFrame. pMapFrame. = pGraphicsContainer.FindFrame(pMap) as IMapFrame;

                IMapGrids pMapGrids = pMapFrame. as IMapGrids; 

                //创建MeasuredGrid对象             

                IMeasuredGrid pMeasuredGrid = new MeasuredGrid() as IMeasuredGrid;

                //设置pMeasuredGrid的投影属性

                IProjectedGrid pProjectedGrid = (IProjectedGrid)pMeasuredGrid;

                pProjectedGrid.SpatialReference = Map.SpatialReference;

                double MaxX,MaxY,MinX,MinY;//动态获取坐标系中的坐标范围,以便设置网格的起始点和间隔

                pProjectedGrid.SpatialReference.GetDomain(out MinX, out MaxX , out MinY , out MaxY );

                pMeasuredGrid.FixedOrigin = true;

                pMeasuredGrid.Units = Map.MapUnits;

                pMeasuredGrid.XIntervalSize = (MaxX-MinX)/20;

                pMeasuredGrid.XOrigin = MinX;

                pMeasuredGrid.YIntervalSize = (MaxY - MinY)/20 ;

                pMeasuredGrid.YOrigin = MinY;

                //将pMeasuredGrid赋值个IMapGrid对象

                IMapGrid pMapGrid = (IMapGrid)pMeasuredGrid;

 

                //设置网格线的符号样式

                ICartographicLineSymbol pLineSymbol;

                pLineSymbol = new CartographicLineSymbolClass();

                pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;

                pLineSymbol.Width = 1;

                IRgbColor rgbColor = new RgbColor();

                rgbColor.Red = 166;

                rgbColor.Green = 187;

                rgbColor.Blue = 208;

                IColor color = rgbColor as IColor;

                pLineSymbol.Color = color;

                pMapGrid.LineSymbol = pLineSymbol;

                //设置ICalibratedMapGridBorder的属性

                ICalibratedMapGridBorder pCalibratedBorder = (ICalibratedMapGridBorder)new CalibratedMapGridBorder();

                IRgbColor gCol = new RgbColor();

                gCol.Red = 255;

                gCol.Blue = 255;

                gCol.Green = 255;

                pCalibratedBorder.BackgroundColor = gCol;

                IRgbColor ForeColor = new RgbColor();

                ForeColor.Red = 0;

                ForeColor.Blue = 0;

                ForeColor.Green = 0;

                pCalibratedBorder.ForegroundColor = ForeColor;

                pCalibratedBorder.BorderWidth = 2;

                pCalibratedBorder.Interval = 50;

                pCalibratedBorder.Alternating = true;

                pMapGrid.Border = (IMapGridBorder)pCalibratedBorder;

                //设置网格的主刻度的样式和可见性

                pMapGrid.TickLength = 15;

                pLineSymbol = new CartographicLineSymbolClass();

                pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;

                pLineSymbol.Width = 1;

                pLineSymbol.Color = color;

                pMapGrid.TickMarkSymbol = null;

                pMapGrid.TickLineSymbol = pLineSymbol;

                pMapGrid.SetTickVisibility(true, true, true, true);

                //设置网格的次一级刻度的样式和可见性

                pMapGrid.SubTickCount = 5;

                pMapGrid.SubTickLength = 10;

                pLineSymbol = new CartographicLineSymbolClass();

                pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;

                pLineSymbol.Width = 0.1;

                pLineSymbol.Color = color;

                pMapGrid.SubTickLineSymbol = pLineSymbol;

                pMapGrid.SetSubTickVisibility(true, true, true, true);

                //标签格式设置IGridLabel

                IGridLabel pGridLabel;

                pGridLabel = pMapGrid.LabelFormat;

                pGridLabel.LabelOffset = 15;

                stdole.StdFont pFont = new stdole.StdFont();

 

                pFont.Size = 16;

                pMapGrid.LabelFormat.Font = pFont as stdole.IFontDisp;

      

                //设置网格的可见性

                pMapGrid.Visible = true;

                //添加网格对象到地图控件中       

                pMapGrids.AddMapGrid(pMapGrid);

                //刷新地图

                pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);

            }

            catch (Exception EX)

            {

                throw EX;

            }

 

        }

标签:pLineSymbol,网格,new,经纬网,pMapGrid,pMeasuredGrid,IPageLayout,true,ArcEngine
来源: https://www.cnblogs.com/gisoracle/p/15640900.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有