AE开发中实现Control中的各种图形工具的方法(转)
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中的各种图形工具的方法(转)的更多相关文章
- AE中实现Control中的各种图形工具的方法
添加命名空间 using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls; A类:前面有Controls 后面有tool的工具都可以用同一类的代码实现( ...
- 【转】.NET+AE开发中常见几种非托管对象的释放
尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 今天在开发时遇到一个问题:" 未处理 System.AccessViolationException Message="尝试 ...
- AE开发能否实现TOC Control里添加多个Data Frame
问题: 在ArcMap中,菜单Insert下Data Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Fr ...
- 企业应用开发模式 ERP项目中应用到的技术和工具
一.基础技术选型 C# .NET 3.5/4.0 这两个版本的.NET已经相当方便(Linq, Lambda,Parallel),语法简洁,配合WCF和WF两项技术,可以满足快速开发,维护方便的目标 ...
- iOS开发(OC)中的命名规范
开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结 ...
- 关于eclipse中DDMS中Emulator Control选项卡为灰色不可用
首先先感谢版主:http://blog.csdn.net/noname666/article/details/51670905#reply 方法一的出处:http://stackoverflow.co ...
- Sublime text 3 中Package Control 的安装与使用方法和解决Sublime Text 3不能正确显示中文的问题
Sublime text 3 中Package Control 的安装与使用方法,英文好可以在这个网址看看, 下面简单的说明一下 : https://packagecontrol.io/install ...
- iOS开发拓展篇—xib中关于拖拽手势的潜在错误
iOS开发拓展篇—xib中关于拖拽手势的潜在错误 一.错误说明 自定义一个用来封装工具条的类 搭建xib,并添加一个拖拽的手势. 主控制器的代码:加载工具条 封装工具条以及手势拖拽的监听事件 此时运行 ...
- iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式
iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式 说明: 1)该文简短介绍在iOS开发中遍历字典.数组和集合的几种常见方式. 2)该文对应的代码可以在下面的地址获得:https:// ...
随机推荐
- 四、IDS4建立Authorization server和Client
一.准备 创建一个名为QuickstartIdentityServer的ASP.NET Core Web 空项目(asp.net core 2.2),端口5000创建一个名为Api的ASP.NET C ...
- Java高级应用(一)
下面来介绍一下Java的高级应用有哪些. Java高级应用 第一讲 类加载 (一).类加载 类加载器是一个特殊的类,负责在运行时寻找和加载类文件.Java允许使用不同的类加载器,甚至是自定义类加载器. ...
- css 设置背景图片透明
最终效果: 背景图片css不变,再背景图片的里层元素设置css样式即可 opacity:0.4; filter:alpha(opacity=40); /* 针对 IE8 以及更早的版本 */
- C++11之列表初始化
1. 在C++98中,标准允许使用花括号{}来对数组元素进行统一的集合(列表)初始化操作,如:int buf[] = {0};int arr[] = {1,2,3,4,5,6,7,8}; 可是对于自定 ...
- shell脚本学习(2)查找
1 grep 用法: grep -F fa 找含有fa字符的字符串 yuyuyu@ubuntu:~$ grep -F fa < do.txt grep -i fa 忽略大 ...
- Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo dp+矩阵快速幂
E. Okabe and El Psy Kongroo Okabe likes to take walks but knows that spies from the Organization c ...
- 搞懂分布式技术14:Spring Boot使用注解集成Redis缓存
本文内容参考网络,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutor ...
- 学号 20175223 《Java程序设计》第10周学习总结
目录 教材学习内容总结 代码调试中的问题和解决过程 1. XAMPP无法启用 MySQL 程序. 2. Ubuntu 无法下载或更新. [代码托管] 学习进度条 参考资料 目录 教材学习内容总结 第十 ...
- (转)C语言指针5分钟教程
转:http://blog.jobbole.com/25409/ 指针.引用和取值 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量.在这份教程里“引用”表示计算机内 ...
- float不完整带来的IE7下的不兼容
这种原因是因为搜索用了float:right;添加报考院校和导入文件没有用float; 解决的方法是:1.给添加报考院校和导入文件分别添加float:left;2.把搜索那部分代码写在添加报考院校和导 ...