返回顶部
首页 > 资讯 > 精选 >ArcEngine开发中右键菜单的设计与实现是怎样的
  • 123
分享到

ArcEngine开发中右键菜单的设计与实现是怎样的

2023-06-17 12:06:14 123人浏览 八月长安
摘要

ArcEngine开发中右键菜单的设计与实现是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。利用ArcGIS Engine开发自定义GIS应用程序中,一般有两种方式来

ArcEngine开发中右键菜单的设计与实现是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

利用ArcGIS Engine开发自定义GIS应用程序中,一般有两种方式来建立右键菜单。

一是利用开发工具自带的右键菜单控件,如Visual Studio中的ContextMenuStrip控件;

二是利用ArcGIS Engine封装好的IToolbarMenu接口。相比较而言,前者实现起来较简单,但后者使程序具有更好的面向对象性,也更利于扩展,在大型系统中,使用该方法是较好的选择。

详细讲述如何利用IToolbarMenu接口实现右键菜单功能。

设计程序主界面如下图所示:

ArcEngine开发中右键菜单的设计与实现是怎样的

在FrmMain类中首先定义如下指针:

private ITOCControl2 pTocControl;   private IMapControl3 pMapControl;   private IToolbarMenu pToolMenuMap;   private IToolbarMenu pToolMenuLayer;

在FrmMain窗体的加载事件中初始化这些指针:

// 取得 MapControl 和 PageLayoutControl 的引用   pTocControl = (ITOCControl2)axTOCControl1.Object;   pMapControl = (IMapControl3)axMapControl1.Object;   // 创建菜单   pToolMenuMap = new ToolbarMenuClass();   pToolMenuLayer = new ToolbarMenuClass();

如此便建立了新的菜单,但其中没有实际的菜单项,具体的命令或者工具必须作为菜单项添加到菜单中才能实现相应的功能。

在添加菜单项之前,得先实现相应命令或工具。下面自定义一个缩放至图层的命令,添加一个类ZoomToLayer.cs至该项目,继承自ESRI.ArcGIS.ADF.BaseClasses.BaseCommand。BaseCommand是一个抽象类,它为开发人员建立自定义命令项提供了一种有效的途径。重写基类的OnCreate和OnClick方法,实现缩放图层至完整的显示于地图控件中。完整代码如下。

using System;   using System.Collections.Generic;   using System.Text;   using ESRI.ArcGIS.ADF.BaseClasses;   using ESRI.ArcGIS.Carto;   using ESRI.ArcGIS.Controls;   namespace ArcEngine3_3   {   class ZoomToLayer : BaseCommand   {   //定义指针   private IMapControl3 pMapControl;   public ZoomToLayer()   {   base.m_caption = "放大至该图层";   }   //重写BaseCommand基类的虚拟方法OnClick()   public override void OnClick()   {   ILayer pLayer = (ILayer)pMapControl.CustomProperty;   pMapControl.Extent = pLayer.AreaOfInterest;   }   //重写BaseCommand基类的抽象方法OnCreate(object hook)   public override void OnCreate(object hook)   {   pMapControl = (IMapControl3)hook;   }   }   }

除自定义实现命令或者工具之外, ArcGIS Engine内置了许多可以直接调用的常用命令和工具,如ControlsADDDataCommandClass、ControlsClearSelectionCommandClass等,也可以直接调用AE内置的菜单,如ControlsFeatureSelectionMenu。

建立好自定义命令或工具后,就可以向菜单中添加对应的菜单项了。在FrmMain窗体的加载事件中添加菜单项。

pToolMenuLayer.AddItem(new ZoomToLayer(), -1, 0, true, esriCommandStyles.esriCommandStyleTextOnly);

设置菜单的hook

pToolMenuLayer.SetHook(pMapControl);

现在有了菜单,需要在TocControl中右键弹出,所以在其OnMouseDown/OnMouseUp事件中获取鼠标点击信息,然后弹出对应菜单即可。

//获取鼠标点击信息   axTOCControl1.HitTest(e.x, e.y, ref pTocItem, ref pBasicMap, ref pLayer, ref oLegendGroup, ref oIndex);   if (e.button == 2)   {   if (pTocItem == esriTOCControlItem.esriTOCControlItemMap)   {   pTocControl.SelectItem(pBasicMap, null);   }   else   {   pTocControl.SelectItem(pLayer, null);   }   //设置CustomProperty为layer (用于自定义的Layer命令)   pMapControl.CustomProperty = pLayer;   //弹出右键菜单   if (pTocItem == esriTOCControlItem.esriTOCControlItemMap)   {   pToolMenuMap.PopupMenu(e.x, e.y, pTocControl.hWnd);   }   else   {   pToolMenuLayer.PopupMenu(e.x, e.y, pTocControl.hWnd);   }   }

用同样的方法可以为TocControl中的地图、图层、符号以及为MapControl等添加各自的右键菜单。最终实现效果如下。

ArcEngine开发中右键菜单的设计与实现是怎样的

关于ArcEngine开发中右键菜单的设计与实现是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: ArcEngine开发中右键菜单的设计与实现是怎样的

本文链接: https://lsjlt.com/news/289321.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ArcEngine开发中右键菜单的设计与实现是怎样的
    ArcEngine开发中右键菜单的设计与实现是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。利用ArcGIS Engine开发自定义GIS应用程序中,一般有两种方式来...
    99+
    2023-06-17
  • DirectUI实现右键弹出菜单的代码怎么写
    要实现右键弹出菜单,可以按照以下步骤进行操作: 定义一个菜单控件,例如ContextMenu。 在需要弹出菜单的控件上,添加鼠标右...
    99+
    2023-10-24
    DirectUI
  • 如何实现右键菜单中添加打开MS-DOS的批处理bat
    小编给大家分享一下如何实现右键菜单中添加打开MS-DOS的批处理bat,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!reg add "...
    99+
    2023-06-09
  • Android实现类似于PC中的右键弹出菜单效果
     Android系统中的ContextMenu(上下文菜单)类似于PC中的右键弹出菜单,当一个视图注册到一个上下文菜单时,执行一个在该对象上的“长按”动作,将出现一个...
    99+
    2022-06-06
    菜单 弹出菜单 Android
  • PouchContainer CRI的设计与实现方法是怎样的
    PouchContainer CRI的设计与实现方法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  1. CRI简介  在每个Kubernetes节点...
    99+
    2023-06-03
  • 怎样自己动手在Win7中制作出个性的右键菜单图标
    今天给大家献上《Win7美化:自己动手,制作个性的右键菜单图标》;主要以右键菜单为例,详细讲解系统图标个别美化过程,当然,大家可以参照此文举一反三 。在此,特别感谢软媒论坛美化达人 Q8267609 分享。右键菜单的三个...
    99+
    2023-05-25
    菜单 图标 菜单图标 Win7 个性 右键
  • Android中实现长按照片弹出右键菜单功能的实例代码
    场景效果 注: 实现 将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局。 然后添加一个ImageV...
    99+
    2022-06-06
    菜单 Android
  • Hybris Enterprise Commerce Platform 服务层的设计与实现是怎样的
    本篇文章给大家分享的是有关Hybris Enterprise Commerce Platform 服务层的设计与实现是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我们来...
    99+
    2023-06-02
  • PHP商城开发中的现金券系统设计与实现
    随着互联网的快速发展,电商行业也逐渐成为了人们消费的主要渠道之一。越来越多的企业开始将目光投向电商行业,而对于电商平台而言,现金券成为了吸引用户的重要手段之一。其中,PHP商城开发中的现金券系统设计与实现尤为重要。本文将从现金券的定义、现金...
    99+
    2023-05-24
    商城开发 PHP实现 现金券
  • Serverless开发实战中Todo是怎样的
    这篇文章将为大家详细讲解有关Serverless开发实战中Todo是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前面将云函数与 Express 进行...
    99+
    2024-04-02
  • PHP中利用路由模块实现RESTful API的设计与开发
    随着互联网的不断发展,基于Web的应用程序越来越多,而REST (Representational State Transfer) 接口已经成为设计和开发Web服务的常见方法。在PHP中,实现RESTful API可以通过路由模块来简化开发...
    99+
    2023-10-21
    PHP RESTful API 路由模块
  • PHP商城开发中的多店铺销售系统设计与实现
    随着电子商务的不断发展,越来越多的企业开始转向线上销售。然而,针对不同区域、不同人群进行精细化管理和销售仍然是一件棘手的事情。因此,多店铺销售系统成为了许多企业在电商领域的必备之选。在本文中,我将介绍一种基于PHP的多店铺销售系统的设计与实...
    99+
    2023-05-21
    实现 PHP商城开发 多店铺销售系统设计
  • PHP商城开发中的供应链管理系统设计与实现
    PHP商城开发中的供应链管理系统设计与实现随着电子商务的快速发展,网络购物已经成为人们生活中的一部分。作为一项复杂的商业活动,电子商务不仅涉及到产品的销售,还需要考虑到供应链的管理问题。供应链管理是对供应商、制造商、批发商、零售商等所有参与...
    99+
    2023-05-23
    供应链管理 PHP商城 系统设计
  • web开发中对于长尾关键词的理解是怎样的
    本篇文章给大家分享的是有关web开发中对于长尾关键词的理解是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。网站上非目标关键词但也可以带来...
    99+
    2024-04-02
  • 基于SSM试卷自动生成系统设计与实现是怎样的
    这篇文章将为大家详细讲解有关基于SSM试卷自动生成系统设计与实现是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。功能点: 1.后台管理员能够对用户管理,用户批量导入,用户组管理,角色管...
    99+
    2023-06-02
  • windows中鼠标右键显示控制面板按钮设置方法是怎样的
    本篇文章为大家展示了windows中鼠标右键显示控制面板按钮设置方法是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们都知道电脑的很多操作都要用到控制面板来进行,那么如何让我们能更迅速的打开...
    99+
    2023-06-14
  • PHP开发买菜系统的配送员管理与派单功能实现方法
    随着电商行业的快速发展和人们对便捷生活的需求不断增加,线上购买食材已经成为一种新的消费趋势。而为了提供更好的服务和更高的效率,买菜系统的开发变得非常重要。在买菜系统中,配送员管理和派单功能是核心要素之一,本文将介绍PHP开发买菜系统的配送员...
    99+
    2023-11-03
    PHP开发 配送员管理 派单功能
  • 全栈开发实战|​名片管理系统的设计与实现(SSM + JSP)
     本章通过名片管理系统的设计与实现,讲述如何使用SSM框架来实现一个Web应用。通过本章的学习,掌握SSM框架应用开发的流程、方法以及技术 01、系统设计 1●系统功能需求 名片管理系统是针对注册用户使用的系统。系统提供的功能如下...
    99+
    2023-09-13
    mysql 数据库 database
  • PHP开发买菜系统的订单退货与退款管理功能实现方法
    PHP开发买菜系统的订单退货与退款管理功能实现方法随着电子商务的快速发展,越来越多的人开始在网上购买生活必需品,其中买菜系统成为了一个热门的电商领域。当顾客在买菜系统下单购买商品后,有时会因为商品质量问题或个人需求变化而需要退货退款。因此,...
    99+
    2023-11-01
    退款 订单 退货
  • PHP开发买菜系统的订单退款与售后服务功能实现方法
    随着网络购物的普及,越来越多的人开始选择在线购买生活用品,其中买菜系统成为了一个热门的应用。在使用买菜系统的过程中,用户可能会遇到一些问题,比如订单退款和售后服务。本文将介绍如何在PHP开发买菜系统中实现订单退款和售后服务功能。首先,我们需...
    99+
    2023-11-01
    售后服务 订单退款 功能实现方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作