Controls中的工具基本可以分为两类:

第一类:点击工具图标或按钮后,当前axMapControl的工具即为所点击的工具命令。

前面有Controls 后面有tool的工具都可以用同一类的代码实现(最后的tool或toolclass都可以)

private void 放大ToolStripMenuItem_Click(object sender, EventArgs e)

{

ICommand Cmd = new ControlsMapZoomInTool();

Cmd.OnCreate(this.axMapControl1.Object);

this.axMapControl1.CurrentTool = Cmd as ITool;

}

同类工具用到次方法的还有一些:

放大:ICommand Cmd = new ControlsMapZoomInTool();

缩小:   ControlsMapZoomOutTool Cmd = new ControlsMapZoomOutTool();

漫游: ControlsMapPanTool Cmd = new ControlsMapPanTool();

绘制矩形:ControlsNewRectangleTool Cmd = new ControlsNewRectangleTool();

绘制圆:ControlsNewCircleTool Cmd = new ControlsNewCircleTool();

绘制椭圆: ControlsNewEllipseTool Cmd = new ControlsNewEllipseTool();

绘制曲线: ControlsNewCurveTool Cmd = new ControlsNewCurveTool();

绘制直线: ControlsNewLineTool Cmd = new ControlsNewLineTool();

绘制点标记: ControlsNewMarkerTool Cmd = new ControlsNewMarkerTool();

流方法绘图: ControlsNewFreeHandTool Cmd = new ControlsNewFreeHandTool();

墨水绘图: ControlsInkPenTool Cmd = new ControlsInkPenTool();

ControlsInkGenericDrawTool Cmd = new ControlsInkGenericDrawTool();

旋转工具:  ControlsMapRotateTool Cmd = new ControlsMapRotateTool();

旋转图形: ControlsRotateElementTool Cmd = new ControlsRotateElementTool();

选择要素:ControlsSelectFeaturesTool Cmd = new ControlsSelectFeaturesTool();

选择图形: ControlsSelectTool Cmd = new ControlsSelectTool();

属性工具: ControlsMapIdentifyTool Cmd = new ControlsMapIdentifyTool();

测量工具: ControlsMapMeasureTool Cmd = new ControlsMapMeasureTool();

超链接工具: ControlsMapHyperlinkTool Cmd = new ControlsMapHyperlinkTool();

第二类:点击工具或按钮后,即可实现点击工具的作用

Command命令的实现,前面是Controls 后面是CommandClass命令的都可以用这个程序

示例:

全图显示:

private void 全图ToolStripMenuItem_Click(object sender, EventArgs e)

{

ICommand Cmd = new ControlsMapFullExtentCommandClass();

Cmd.OnCreate(this.axMapControl1.Object);

Cmd.OnClick();

}

类似可以实现的功能有:

坐标查找: ICommand Cmd = new ControlsMapGoToCommand();

查找命令:ICommand Cmd = new ControlsMapFindCommandClass();

创建书签: ICommand Cmd = new ControlsMapCreateBookmarkCommandClass();

墨迹设置:ICommand Cmd = new ControlsInkOptionsCommandClass();

清楚旋转: ICommand Cmd = new ControlsMapClearMapRotationCommandClass();

转到页底:  ICommand Cmd = new ControlsMapPageDownCommandClass();

转到页左: ICommand Cmd = new ControlsMapPageLeftCommandClass();

转到页右: ICommand Cmd = new ControlsMapPageRightCommandClass();

转到页上:ICommand Cmd = new ControlsMapPageUpCommandClass();

向右:  ICommand Cmd = new ControlsMapRightCommandClass();

向上: ICommand Cmd = new ControlsMapUpCommandClass();

中心放大:ICommand Cmd = new ControlsMapZoomInFixedCommandClass();

中心缩小:  ICommand Cmd = new ControlsMapZoomOutFixedCommandClass();

后一视图:  ICommand Cmd = new ControlsMapZoomToLastExtentBackCommandClass();

前一视图: ICommand Cmd = new ControlsMapZoomToLastExtentForwardCommandClass();

地方查找: ICommand Cmd = new ControlsMyPlacesCommandClass();

打开文档: ICommand Cmd = new ControlsOpenDocCommandClass();

撤销:  ICommand Cmd = new ControlsRedoCommandClass();

图形向左旋转: ICommand Cmd = new ControlsRotateLeftCommandClass();

向右旋转: ICommand Cmd = new ControlsRotateRightCommandClass();

文档另存为: ICommand Cmd = new ControlsSaveAsDocCommandClass();

选择第一个图层中的所有元素:ICommand Cmd = new ControlsSelectAllCommandClass();

选择屏幕中的所有部分: ICommand Cmd = new ControlsSelectScreenCommandClass();

撤销命令:ICommand Cmd = new ControlsUndoCommandClass();

缩放到被选择的部分: ICommand Cmd = new ControlsZoomToSelectedCommandClass();

************************************************************

补充:上面的某些功能的其他实现方法

几个特殊的方法:

private void 全图ToolStripMenuItem_Click(object sender, EventArgs e)

{

this.axMapControl1.Extent = this.axMapControl1.FullExtent;

}

private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)

{

axMapControl1.Refresh();

}

private void 中心放大ToolStripMenuItem_Click(object sender, EventArgs e)

{

IEnvelope objEnvelope = null;

objEnvelope = axMapControl1.Extent;

objEnvelope.Expand(0.2, 0.2, true);

axMapControl1.Extent = objEnvelope;

}

private void 中心缩小ToolStripMenuItem_Click(object sender, EventArgs e)

{

IEnvelope objEnvelope = null;

objEnvelope = axMapControl1.Extent;

objEnvelope.Expand(2, 2, true);

axMapControl1.Extent = objEnvelope;

}

private void 前一视图ToolStripMenuItem_Click(object sender, EventArgs e)

{

IExtentStack pExtentStack = null;

pExtentStack = axMapControl1.ActiveView.ExtentStack;

if (pExtentStack.CanUndo())

{

pExtentStack.Undo();

}

axMapControl1.Refresh();

}

private void 后一视图ToolStripMenuItem_Click(object sender, EventArgs e)

{

IExtentStack pExtentStack = null;

pExtentStack = axMapControl1.ActiveView.ExtentStack;

if (pExtentStack.CanRedo())

{

pExtentStack.Redo();

}

axMapControl1.Refresh();

}

https://blog.csdn.net/baishijiangbian/article/details/77880594

AE开发中实现Control中的各种图形工具的方法(转)的更多相关文章

  1. AE中实现Control中的各种图形工具的方法

    添加命名空间 using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls; A类:前面有Controls 后面有tool的工具都可以用同一类的代码实现( ...

  2. 【转】.NET+AE开发中常见几种非托管对象的释放

    尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 今天在开发时遇到一个问题:" 未处理 System.AccessViolationException Message="尝试 ...

  3. AE开发能否实现TOC Control里添加多个Data Frame

    问题: 在ArcMap中,菜单Insert下Data Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Fr ...

  4. 企业应用开发模式 ERP项目中应用到的技术和工具

    一.基础技术选型 C# .NET 3.5/4.0  这两个版本的.NET已经相当方便(Linq, Lambda,Parallel),语法简洁,配合WCF和WF两项技术,可以满足快速开发,维护方便的目标 ...

  5. iOS开发(OC)中的命名规范

    开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结 ...

  6. 关于eclipse中DDMS中Emulator Control选项卡为灰色不可用

    首先先感谢版主:http://blog.csdn.net/noname666/article/details/51670905#reply 方法一的出处:http://stackoverflow.co ...

  7. Sublime text 3 中Package Control 的安装与使用方法和解决Sublime Text 3不能正确显示中文的问题

    Sublime text 3 中Package Control 的安装与使用方法,英文好可以在这个网址看看, 下面简单的说明一下 : https://packagecontrol.io/install ...

  8. iOS开发拓展篇—xib中关于拖拽手势的潜在错误

    iOS开发拓展篇—xib中关于拖拽手势的潜在错误 一.错误说明 自定义一个用来封装工具条的类 搭建xib,并添加一个拖拽的手势. 主控制器的代码:加载工具条 封装工具条以及手势拖拽的监听事件 此时运行 ...

  9. iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

    iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...

随机推荐

  1. 三、Json方式函数

    一.Json方式函数 // 4. 查看对象信息 console.dir(obj) =>可以显示一个对象所有的属性和方法. var info = { blog: "http://cllg ...

  2. CentOS 6.5安装aria2(转载)

    CentOS 6.5安装aria2 由于yum install aria2无法找到安装包,试了好几个源,都找不到,于是自己找了一些地址: 1.下载安装包: # wget http://ftp.tu-c ...

  3. Docker基础(上)

    Docker基础(上) 链接:https://pan.baidu.com/s/1KQjKml2OZAReYwOvpWD9XQ 提取码:6vo8 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...

  4. Redis面试题大全含答案

    Redis面试题大全含答案 Redis面试题大全含答案 1.什么是Redis?答:Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写.支持网络.可基于内 ...

  5. mysql 存储引擎介绍2

    了解MYSQL的都知道,在MYSQL中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm ...

  6. ERROR 2003 (HY000): Can't connect to MySQL server on '129.28.149.240' (111) mysql 无法远程连接

    环境: ubuntu  mysql 一. 查看端口 可以看到mysql监控的是本机Ip root@jiang:/etc/mysql/mysql.conf.d# netstat -apn|grep 33 ...

  7. 所有anaconda安装包失败的解决办法汇总

    多试几次,有时候网络不稳定下载一半会停掉 更改Pip源 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 1.首先确认镜像源 ...

  8. springcloud中provider-product依赖

    <dependencies> <dependency> <groupId>cn.lijun.springcloud</groupId> <arti ...

  9. SQL Server 2014 安装说明

    SQL Server 2014 安装说明 本节内容将说明如何通过安装向导在 Windows Server 2012 R2 上安装 SQL Server 2014. 先从 MSDN 网站上下载安装了 S ...

  10. The First Scrum Meeting!

    第六周会议 情况简述 会议概要:明确需求,确定目标 参与人员:詹晓宇  谢赛金  熊紫仁  徐翠萍  周娟  孙尚煜 讨论时间:2019-10-24 会议地点:六区研讨性教室 具体内容 根据之前做的P ...