C# PageLayoutControl的基本操作
来自: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的基本操作的更多相关文章
- PageLayoutControl的基本操作
整理了下对PageLayoutControl的基本功能操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- 三、Redis基本操作——List
小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...
- 二、Redis基本操作——String(实战篇)
小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...
- 一、Redis基本操作——String(原理篇)
小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...
- Linq查询基本操作
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...
- C++ map的基本操作和使用
原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可 ...
随机推荐
- GWT+CodeTemplate+TableCreate快速开发
刚进一家新公司,公司表示让我们几个新人写页面联系熟悉 怎么快速开发,进入正题: 1.根据设计规范设计页面excel 2.CodeTemplate根据excel生成属性类和对应方法(文本框,下拉框等等单 ...
- CodeForces 709C Letters Cyclic Shift (水题)
题意:给定一个字符串,让你把它的一个子串字符都减1,使得总字符串字典序最小. 析:由于这个题是必须要有一个字串,所以你就要注意这个只有一个字符a的情况,其他的就从开始减 1,如果碰到a了就不减了,如果 ...
- How Tomcat Works(十七)
在前面的文章中,已经学会了如何通过实例化一个连接器和容器来获得一个servlet容器,并将连接器和容器相关联:但在前面的文章中只有一个连接器可用,该连接器服务8080端口上的HTTP请求,无法添加另一 ...
- AFNetworking 与 NSURLSession
转载自:http://blog.sina.com.cn/s/blog_8157560c0101kt7h.html 1. 也就是说在IOS 7.1 之后你想用网络请求的话有两种途径,NSUrlSessi ...
- 图片转换成base64_encode的链接代码示例
<?php $file = "example.jpg"; $type = getimagesize( $file ); //取得图片的大小,类型等 $file_content ...
- sql GROUP BY 分组统计
语句1: SELECT TypeID, COUNT(*) AS [count] FROM GoodsInfo GROUP BY TypeID 得到结果 解析结果:GoodsInfo表有 4条记录, ...
- iOS开发-基本的网络知识
一.HTTP协议的主要特点:(摘自 仰望星空 的博客)重点内容 1. CS模式 2. 简单快速:只需要传送请求方法和路径.(常用方法有GET,HEAD,POST) 3. 灵活:任意对象都可以,类型由C ...
- 真正通用的SQL分页存储过程
关于SQL分页的问题,网上找到的一些SQL其实不能真正做到通用,他们主要是以自增长ID做为前提的.但在实际使用中,很多表不是自增长的,而且主键也不止一个字段,其实我们稍做改进就可以达到通用.这里还增加 ...
- Unable to execute dex: Multiple dex files define 解决方法
程序编译正常,在用Eclipse调试执行时,报错Unable to execute dex: Multiple dex files define: 方法: 原因是有重复的.jar被引用,可以 ...
- Codeforces Gym 100531J Joy of Flight 变换坐标系
Joy of Flight 题目连接: http://codeforces.com/gym/100531/attachments Description Jacob likes to play wit ...