ArcEngine添加指北针
程序主界面如下图所示:
主界面代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.SystemUI;namespace WindowsFormsApplication1
{public partial class FrmMain : DevComponents.DotNetBar.RibbonForm{private INorthArrow m_NorthArrrow;private IElement m_Element;private string operation;// 构造函数public FrmMain(){InitializeComponent();}// 地图放大private void btnZoomIn_Click(object sender, EventArgs e){operation = null;ICommand command = new ControlsPageZoomInTool();command.OnCreate(axPageLayoutControl1.Object);axPageLayoutControl1.CurrentTool = command as ITool;}// 地图缩小private void btnZoomOut_Click(object sender, EventArgs e){operation = null;ICommand command = new ControlsPageZoomOutTool();command.OnCreate(axPageLayoutControl1.Object);axPageLayoutControl1.CurrentTool = command as ITool;}// 地图漫游private void btnPan_Click(object sender, EventArgs e){operation = null;ICommand command = new ControlsPagePanTool();command.OnCreate(axPageLayoutControl1.Object);axPageLayoutControl1.CurrentTool = command as ITool;}// 全图显示private void btnFullExtent_Click(object sender, EventArgs e){ICommand command = new ControlsPageZoomWholePageCommand();command.OnCreate(axPageLayoutControl1.Object);command.OnClick();}// 添加数据private void btnLoadData_Click(object sender, EventArgs e){ICommand command = new ControlsAddDataCommand();command.OnCreate(axPageLayoutControl1.Object);command.OnClick();}// 添加指北针private void btnAddNorthArrow_Click(object sender, EventArgs e){FrmNorthArrow frmNorthArrow = new FrmNorthArrow();frmNorthArrow.OnQueryNorthArrow += pNorthArrow => m_NorthArrrow = pNorthArrow;frmNorthArrow.ShowDialog();axPageLayoutControl1.CurrentTool = null;axPageLayoutControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair;operation = "添加指北针";}// OnMouseDown事件private void axPageLayoutControl1_OnMouseDown(object sender, IPageLayoutControlEvents_OnMouseDownEvent e){if (operation == "添加指北针"){IEnvelope pEnvelope = axPageLayoutControl1.TrackRectangle();if (pEnvelope.IsEmpty || pEnvelope == null || pEnvelope.Width == 0 || pEnvelope.Height == 0){return;}// 删除已有指北针IActiveView pActiveViewv = axPageLayoutControl1.PageLayout as IActiveView;IGraphicsContainer pGraphicsContainer = pActiveViewv.GraphicsContainer;if (m_Element != null){pGraphicsContainer.DeleteElement(m_Element);pActiveViewv.Refresh();}// 获取框架元素IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pActiveViewv.FocusMap) as IMapFrame;IMapSurroundFrame pMapSurroundFrame = new MapSurroundFrame() as IMapSurroundFrame;pMapSurroundFrame.MapFrame = pMapFrame;pMapSurroundFrame.MapSurround = m_NorthArrrow as IMapSurround;// 添加指北针m_Element = pMapSurroundFrame as IElement;m_Element.Geometry = pEnvelope;pGraphicsContainer.AddElement(m_Element, 0);pActiveViewv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}}}
}
添加指北针界面如下图所示:
指北针界面代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using stdole;
using ESRI.ArcGIS.ADF;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.SystemUI;namespace WindowsFormsApplication1
{public partial class FrmNorthArrow : DevComponents.DotNetBar.OfficeForm{// 定义事件public event Action<INorthArrow> OnQueryNorthArrow;// 样式变量private ISymbologyStyleClass m_SymbologyStyleClass;private IStyleGalleryItem m_StyleGalleryItem;private INorthArrow m_NorthArrow;// 构造函数public FrmNorthArrow(){InitializeComponent();}// Load事件private void FrmNorthArrow_Load(object sender, EventArgs e){axSymbologyControl1.LoadStyleFile(Application.StartupPath + "\\style\\ESRI.ServerStyle");axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassNorthArrows;// 选择符号m_SymbologyStyleClass = axSymbologyControl1.GetStyleClass(axSymbologyControl1.StyleClass);m_SymbologyStyleClass.SelectItem(0);// 预览符号PriviewSymbol();inputAngle.Value = (int)m_NorthArrow.CalibrationAngle;inputColor.SelectedColor = Utility.ConvertToColor(m_NorthArrow.Color);}// 切换符号private void axSymbologyControl1_OnItemSelected(object sender, ISymbologyControlEvents_OnItemSelectedEvent e){m_StyleGalleryItem = e.styleGalleryItem as IStyleGalleryItem;m_NorthArrow = m_StyleGalleryItem.Item as INorthArrow;// PriviewSymbol();inputAngle.Value = (int)m_NorthArrow.CalibrationAngle;inputColor.SelectedColor = Utility.ConvertToColor(m_NorthArrow.Color);}// 设置颜色private void inputColor_SelectedColorChanged(object sender, EventArgs e){m_NorthArrow.Color = Utility.ConvertToRgbColor(inputColor.SelectedColor);PriviewSymbol();}// 设置角度private void inputAngle_ValueChanged(object sender, EventArgs e){m_NorthArrow.CalibrationAngle = inputAngle.Value;PriviewSymbol();}// 符号预览 private void PriviewSymbol(){IPictureDisp pPictureDisp = m_SymbologyStyleClass.PreviewItem(m_StyleGalleryItem, pictureBox1.Width, pictureBox1.Height);Image priviewImage = Image.FromHbitmap(new IntPtr(pPictureDisp.Handle));pictureBox1.Image = priviewImage;}// 确定private void btnOk_Click(object sender, EventArgs e){if (OnQueryNorthArrow != null){m_NorthArrow.Size *= 3;OnQueryNorthArrow(m_NorthArrow);this.Close();this.Dispose();}}// 取消private void btnCancel_Click(object sender, EventArgs e){this.Close();this.Dispose();}}
}
辅助类代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using stdole;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.SystemUI;namespace WindowsFormsApplication1
{public class Utility{// Color转换为IColorpublic static IColor ConvertToRgbColor(Color color){IColor pColor = new RgbColor();pColor.RGB = color.R + color.G * 256 + color.B * 65536;return pColor;}// IColor转换为Colorpublic static Color ConvertToColor(IColor pColor){return ColorTranslator.FromOle(pColor.RGB);}}
}
运行结果如下图:
ArcEngine添加指北针相关推荐
- ArcEngine添加指北针、比例尺、图例(注意UID值)
指北针 C#代码 public void AddNorthArrow(IPageLayout pageLayout) { IGraphicsContainer container = pageLa ...
- ggspatial | ggplot2的地图制作拓展包(1):如何添加指北针和比例尺
在前面的推文里,小编介绍了R语言的基础绘图系统和tmap工具包绘制地图的方法.ggplot2工具包作为现在最受欢迎的绘图包,其本身绘制地图的功能并不算强大.但是ggplot2有许多优秀的拓展包,它们共 ...
- 【python】使用python绘制地图时添加指北针
写在前面 本博文基于matplotlib,手动实现在python中绘制地图时添加指北针. 代码如下: from mpl_toolkits.basemap import Basemap import m ...
- ArcGIS API for JavaScript 4.2学习笔记[10] 2D添加指北针widget、视图保存、视图padding(第二章完结)...
这几个例子是第二章除了入门之外比较简单的几个,就做个合集,把最核心的代码(第二参数)和 引用放上来即可,不作多解释. 2D地图添加指北针widget 2D地图一般修正方向为正北方就需要这个widget ...
- 南方cass怎么添加指北针_添加比例尺 指北针
添加图例.比例尺.指北针 代码中有注释,直接上 指北针 C# 代码 public void AddNorthArrow(IPageLayout pageLayout) { IGraphic ...
- 南方cass怎么添加指北针_添加图例、比例尺、指北针
代码中有注释,直接上 指北针 public void AddNorthArrow(IPageLayout pageLayout) { IGraphicsContainer container = pa ...
- ArcEngine 添加字段
private void AddField(IFeatureClass pFeatureClass, string name, string aliasName, esriFieldType Fiel ...
- cass怎么添加指北针图例_答疑|CASS怎么添加图例?
有用户拿着2017版的图式过来找我,图式的附图中,图框的右侧都有一个"图例".CASS咋没有呢?怎么解决? 图式的图例截图 答疑 CASS暂时只有5000-100000比例尺的图框 ...
- cass怎么添加指北针图例_你做的柱状图太丑了,怎么不来学学这些操作?
早上好~ 上期 PPT 饼图教程推出后,有小伙伴留言询问有没有关于柱形图 / 条形图的一些玩法,想借此在一些汇报上突出新意,所以就有了今天这篇依旧很干的教程. 不得不说柱形图和条形图在做数据汇报时很常 ...
最新文章
- Java项目:小蜜蜂扩音器网上商城系统(java+JSP+Servlet+JDBC+Ajax+mysql)
- 小裁缝返乡创业做儿童品牌,如今身家数十亿冲刺上市
- linux 子域dns,linux下搭建DNS子域及相关授权详解
- 安利一款编辑神器——Markdown
- Django Rest framework的限流实现流程
- mockjs的介绍、基本使用和封装
- 【 Redis开发与运维】第3章 读书笔记
- python中什么是句柄_python中的句柄操作的方法示例
- Linux下本地yum源配置和局域网yum源配置
- Paraview源码解析5:vtkPolyDataAlgorithm类
- 修改egret引擎源码
- 用html5画卡通人物源代码,用canvas画一个卡通人物!!
- 7寸显示器 树莓派4b_树莓派7寸触摸屏安装指南
- ribbonmq超时配置_使用RabbitMQ实现订单超时取消(延迟队列)
- 一文让你读懂什么是智慧数字经营
- cad2016服务器为空,修改CAD2016的服务器地址
- qq互动视频页面加载失败_腾讯视频互动视频 | 创作指南
- (一)kibana使用
- move_base参数配置
- c# .net 读取word文档文件,.txt、.doc、.docx、.xls、xlsx