• PageLayoutControl的基本操作


    整理了下对PageLayoutControl的基本功能操作

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using ESRI.ArcGIS.Controls;
    using ESRI.ArcGIS.Carto;
    using ESRI.ArcGIS.Display;
    using ESRI.ArcGIS.Geometry;
    using ESRI.ArcGIS.esriSystem;
    
    namespace MyPageLayoutControl    //根据需要进行替换
    {
        class PageLayoutBaseOperate
        {
    
            /// <summary>
            /// 依据ArcGis安装路径,加载自带信息
            /// </summary>
            /// <param name="symbologyControl"></param>
            public static void InitAxSybologyControl(ISymbologyControlDefault symbologyControl )
            {
                try
                {
                   // Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\ESRI\CoreRuntime", true);
                    Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\ESRI\Desktop10.0", true);
                    if (null != regKey)
                    {
                        symbologyControl.LoadStyleFile(regKey.GetValue("InstallDir") + "\Styles\ESRI.ServerStyle");
                    }
                    else
                    {
                        MessageBox.Show("未能获得SymbologyControl控件的样式类!","提示",MessageBoxButtons.OK , MessageBoxIcon.Warning);
                    }
                    symbologyControl.GetStyleClass(esriSymbologyStyleClass.esriStyleClassBackgrounds).Update();
                    symbologyControl.GetStyleClass(esriSymbologyStyleClass.esriStyleClassBorders).Update();
                    symbologyControl.GetStyleClass(esriSymbologyStyleClass.esriStyleClassShadows).Update();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("初始化SymbologyControl状态失败!" + ex.Message);
                }
            }
    
            /// <summary>
            /// 加载地图文当
            /// </summary>
            /// <param name="mapControl"></param>
            public static void LoadMapDocument(IPageLayoutControlDefault pageLayoutControl)
            {
                OpenFileDialog openfileDlg = new OpenFileDialog();
                openfileDlg.Title = "加载地图文当";
                openfileDlg.Filter = "map document (*.mxd)|*.mxd";
                openfileDlg.ShowDialog();
                string filepath = openfileDlg.FileName;
    
                MapDocumentClass mapDoc = new MapDocumentClass();
    
                if (pageLayoutControl.CheckMxFile(filepath))
                {
                    mapDoc.Open(filepath, "");
    
                    for (int i = 0; i < mapDoc.MapCount; i++)
                    {
                        pageLayoutControl.PageLayout = mapDoc.PageLayout;
                    }
                    pageLayoutControl.Refresh();
                }
                else
                {
                    MessageBox.Show(filepath + "不是有效的地图文当!");
                }
            }
    
            /// <summary>
            /// 设置边框
            /// </summary>
            /// <param name="symbologyControl"></param>
            public static void SetBorders(ISymbologyControlDefault symbologyControl)
            {
                try
                {
                    symbologyControl.StyleClass = esriSymbologyStyleClass.esriStyleClassBorders;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("设置边框失败!" + ex.Message);
                }
            }
    
            /// <summary>
            /// 设置阴影
            /// </summary>
            /// <param name="symbologyControl"></param>
            public static void SetShadows(ISymbologyControlDefault symbologyControl)
            {
                try
                {
                    symbologyControl.StyleClass = esriSymbologyStyleClass.esriStyleClassShadows;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("设置阴影失败!" + ex.Message);
                }
            }
    
    
            /// <summary>
            /// 设置背景
            /// </summary>
            /// <param name="pageLayoutControl"></param>
            public static void SetBackGrounds(ISymbologyControlDefault symbologyControl)
            {
                try
                {
                    symbologyControl.StyleClass = esriSymbologyStyleClass.esriStyleClassBackgrounds;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("设置背景失败!" + ex.Message);
                }
            }
            
            /// <summary>
            /// 设置网格
            /// </summary>
            /// <param name="pageLayoutControl"></param>
            public static void SetGrid(IPageLayoutControlDefault pageLayoutControl)
            {
                try
                {
                    IActiveView activeView = pageLayoutControl.PageLayout as IActiveView;
                    IMap map = activeView.FocusMap;
                    IMeasuredGrid measuredGrid = new MeasuredGridClass();
                    IMapGrid mapGrid = measuredGrid as IMapGrid;
                    measuredGrid.FixedOrigin = true;
                    measuredGrid.Units = map.MapUnits;
                    measuredGrid.XIntervalSize = 10;
                    measuredGrid.YIntervalSize = 10;
                    measuredGrid.XOrigin = -180;
                    measuredGrid.YOrigin = -90;
    
                    IProjectedGrid projectedGrid = measuredGrid as IProjectedGrid;
                    projectedGrid.SpatialReference = map.SpatialReference;
                    mapGrid.Name = "Measured Grid";
                    IGraphicsContainer graphicsContainer = activeView as IGraphicsContainer;
                    IMapFrame mapFrame = graphicsContainer.FindFrame(map) as IMapFrame;
                    IMapGrids mapGrids = mapFrame as IMapGrids;
                    mapGrids.AddMapGrid(mapGrid);
                    activeView.PartialRefresh(esriViewDrawPhase.esriViewBackground,null,null);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("设置网格失败!" + ex.Message);
                }
    
            }
    
            /// <summary>
            /// 已经SymbologyControl中的选择值,设定PageLayout属性
            /// </summary>
            /// <param name="pageLayoutControl"></param>
            /// <param name="styleGalleryItem">e.styleGalleryItem</param>
            public static void SetPageLayoutBySymbology(IPageLayoutControlDefault pageLayoutControl, IStyleGalleryItem styleGalleryItem)
            {
                try
                {
                    IFrameProperties frameProperties = (IFrameProperties)pageLayoutControl.GraphicsContainer.FindFrame(pageLayoutControl.ActiveView.FocusMap);
                    if (styleGalleryItem.Item is IBackground)
                    {
                        frameProperties.Background = (IBackground)styleGalleryItem.Item;
                    }
                    else if (styleGalleryItem.Item is IBorder)
                    {
                        frameProperties.Border = (IBorder)styleGalleryItem.Item;
                    }
                    else if (styleGalleryItem.Item is IShadow)
                    {
                        frameProperties.Shadow = (IShadow)styleGalleryItem.Item;
                    }
                    pageLayoutControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("设定PageLayout属性失败!" + ex.Message);
                }
            }
    
    
            /// <summary>
            /// 缩小
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void ZoomOut(IPageLayoutControlDefault pagelayoutControl)
            {
                try
                {
                    pagelayoutControl.MousePointer = esriControlsMousePointer.esriPointerPageZoomOut;
                    //IEnvelope ipEnv = mapControl.TrackRectangle();
                    IEnvelope ipEnv = pagelayoutControl.Extent;
                    ipEnv.Expand(2, 2, true);
                    pagelayoutControl.Extent = ipEnv;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("缩小失败!" + ex.Message);
                }
            }
    
            /// <summary>
            /// 放大
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void ZoomIn(IPageLayoutControlDefault pagelayoutControl)
            {
                try
                {
                    pagelayoutControl.MousePointer = esriControlsMousePointer.esriPointerPageZoomIn;
                    IEnvelope ipEnv = pagelayoutControl.TrackRectangle();
                    if (ipEnv.IsEmpty)
                    {
                        ipEnv = pagelayoutControl.Extent;
                        ipEnv.Expand(0.5, 0.5, true);
                    }
                    pagelayoutControl.Extent = ipEnv;
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("放大失败!" + ex.Message);
                }
            }
    
            /// <summary>
            /// 漫游
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void Pan(IPageLayoutControlDefault pagelayoutControl)
            {
                try
                {
                    pagelayoutControl.MousePointer = esriControlsMousePointer.esriPointerPagePan;
                    //IEnvelope ipEnv = mapControl.Extent;
                    pagelayoutControl.Pan();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("漫游失败!" + ex.Message);
                }
            }
    
            /// <summary>
            /// 全图
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void FullExtent(IPageLayoutControlDefault pagelayoutControl)
            {
                try
                {
                    pagelayoutControl.Extent = pagelayoutControl.FullExtent;
                    pagelayoutControl.Refresh();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("全图显示失败!" + ex.Message);
                }
            }
    
            /// <summary>
            /// 添加文字
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void AddTextElement(IPageLayoutControlDefault pagelayoutControl, string text, IRgbColor color, IEnvelope envelope,double textsize)
            {
                try
                {
    
                    IActiveView activeView;
                    IGraphicsContainer graphicsContainer;
                    ITextElement textElement;
                    ITextSymbol textSymbol;
                    //IRgbColor color;
                    IElement element;
                    //IEnvelope envelope;
    
                    activeView = pagelayoutControl.PageLayout as IActiveView;
                    if (null == envelope)
                    {
                        envelope = new EnvelopeClass();
                        envelope.PutCoords(0, 0, 5, 5);
                    }
                    textElement = new TextElementClass();
                    element = textElement as IElement;
                    element.Geometry = envelope;
                    if (null == text)
                    {
                        textElement.Text = "测试地图";
                    }
                    else
                    {
                        textElement.Text = text;
                    }
                    textSymbol = new TextSymbolClass();
                    if (null == color)
                    {
                        color = new RgbColorClass();
                        color.Green = 255;
                        color.Blue = 255;
                        color.Red = 0;
                    }
    
                    textSymbol.Color = color as IColor;
                    if (textsize < 0.1 || textsize > 100)
                    {
                        textSymbol.Size = 30;
                    }
                    else
                    {
                        textSymbol.Size = textsize;
                    }
                    textElement.Symbol = textSymbol;
                    graphicsContainer = activeView as IGraphicsContainer;
                    graphicsContainer.AddElement(element, 0);
                    pagelayoutControl.Refresh();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("添加文字失败!" + ex.Message);
                }
            }
    
            /// <summary>
            /// 添加图例
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void AddmapSurround(IPageLayoutControlDefault pagelayoutControl, IEnvelope envelope, string mapSurroundName)
            {
                UID uid;
                //IEnvelope envelope;
                //IMapSurround mapSurround;
                IGraphicsContainer graphicsContainer;
                IMapFrame mapFrame;
                IMapSurroundFrame mapSurroundFrame;
                IElement element;
                ITrackCancel trackCancel;
    
                uid = new UIDClass();
                
                uid.Value = "esriCarto.legend";
                if (null == envelope)
                {
                    envelope = new EnvelopeClass();
                    envelope.PutCoords(1, 1, 2, 2);
                }
                graphicsContainer = pagelayoutControl.PageLayout as IGraphicsContainer;
                mapFrame = graphicsContainer.FindFrame(pagelayoutControl.ActiveView.FocusMap) as IMapFrame;
    
                mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null);
                if (null == mapSurroundName)
                {
                    mapSurroundFrame.MapSurround.Name = "图例";
                }
                else
                {
                    mapSurroundFrame.MapSurround.Name = mapSurroundName;
                }
                element = mapSurroundFrame as IElement;
                element.Geometry = envelope;
                element.Activate(pagelayoutControl.ActiveView.ScreenDisplay);
                trackCancel = new CancelTrackerClass();
                element.Draw(pagelayoutControl.ActiveView.ScreenDisplay, trackCancel);
                graphicsContainer.AddElement(element, 0);
                pagelayoutControl.Refresh();
            }
    
            /// <summary>
            /// 文字比例尺
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void ScaleText(IPageLayoutControlDefault pagelayoutControl, IEnvelope envelope)
            {
                UID uid;
                //IEnvelope envelope;
                //IMapSurround mapSurround;
                IGraphicsContainer graphicsContainer;
                IMapFrame mapFrame;
                IMapSurroundFrame mapSurroundFrame;
                IElement element;
                ITrackCancel trackCancel;
    
                uid = new UIDClass();
                uid.Value = "esriCarto.ScaleText";
                if (null == envelope)
                {
                    envelope = new EnvelopeClass();
                    envelope.PutCoords(1, 1, 2, 2);
                }
                graphicsContainer = pagelayoutControl.PageLayout as IGraphicsContainer;
                mapFrame = graphicsContainer.FindFrame(pagelayoutControl.ActiveView.FocusMap) as IMapFrame;
                mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null);
                element = mapSurroundFrame as IElement;
                element.Geometry = envelope;
                element.Activate(pagelayoutControl.ActiveView.ScreenDisplay);
                trackCancel = new CancelTrackerClass();
                element.Draw(pagelayoutControl.ActiveView.ScreenDisplay, trackCancel);
                graphicsContainer.AddElement(element, 0);
                pagelayoutControl.Refresh();
            }
    
            /// <summary>
            /// 图例比例尺
            /// </summary>
            /// <param name="pagelayoutControl"></param>
            public static void ScaleMap(IPageLayoutControlDefault pagelayoutControl, IEnvelope envelope)
            {
                UID uid;
                //IEnvelope envelope;
                //IMapSurround mapSurround;
                IGraphicsContainer graphicsContainer;
                IMapFrame mapFrame;
                IMapSurroundFrame mapSurroundFrame;
                IElement element;
                ITrackCancel trackCancel;
    
                uid = new UIDClass();
                uid.Value = "esriCarto.ScaleLine";
                if (null == envelope)
                {
                    envelope = new EnvelopeClass();
                    envelope.PutCoords(1, 1, 10, 2);
                }
                graphicsContainer = pagelayoutControl.PageLayout as IGraphicsContainer;
                mapFrame = graphicsContainer.FindFrame(pagelayoutControl.ActiveView.FocusMap) as IMapFrame;
                mapSurroundFrame = mapFrame.CreateSurroundFrame(uid, null);
                element = mapSurroundFrame as IElement;
                element.Geometry = envelope;
                element.Activate(pagelayoutControl.ActiveView.ScreenDisplay);
                trackCancel = new CancelTrackerClass();
                element.Draw(pagelayoutControl.ActiveView.ScreenDisplay, trackCancel);
                graphicsContainer.AddElement(element, 0);
                pagelayoutControl.Refresh();
            }
    
            /// <summary>
            /// 颜色
            /// </summary>
            /// <param name="r"></param>
            /// <param name="g"></param>
            /// <param name="b"></param>
            /// <param name="t"></param>
            /// <returns></returns>
            public static IRgbColor GetColor(int r, int g, int b, int t)
            {
                IRgbColor rgbcolor = new RgbColorClass();
                rgbcolor.Red = r;
                rgbcolor.Green = g;
                rgbcolor.Blue = b;
                rgbcolor.Transparency = (byte)t;
                return rgbcolor;
            }
    
        }
    }
    
  • 相关阅读:
    给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1},
    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
    给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
    在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
    Oracle-SQL-按月统计自助终端交易量
    Hibernate table schema 的设置与应用
    Oracle函数之chr
  • 原文地址:https://www.cnblogs.com/shenchao/p/3594394.html
Copyright © 2020-2023  润新知