C# PageLayoutControl的基本操作

來源:互聯網
上載者:User

標籤:

來自:http://www.cnblogs.com/shenchao/p/3594394.html
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;         }       } }

 

C# PageLayoutControl的基本操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.