成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ArcEngine開發:右鍵菜單的設計與實現

開發 后端
ArcGIS Engine是ESRI在ArcGIS9版本才開始推出的新產品,它是一套完備的嵌入式GIS 組件庫和工具庫,使用ArcGIS Engine開發的GIS應用程序可以脫離ArcGIS Desktop而運行。讓我們一起來看,右鍵菜單的設計與實現。

利用ArcGIS Engine開發自定義GIS應用程序中,一般有兩種方式來建立右鍵菜單。

一是利用開發工具自帶的右鍵菜單控件,如Visual Studio中的ContextMenuStrip控件;

二是利用ArcGIS Engine封裝好的IToolbarMenu接口。相比較而言,前者實現起來較簡單,但后者使程序具有更好的面向對象性,也更利于擴展,在大型系統中,使用該方法是較好的選擇。

本文詳細講述如何利用IToolbarMenu接口實現右鍵菜單功能。

設計程序主界面如下圖所示:

在FrmMain類中首先定義如下指針:

 

  1. private ITOCControl2 pTocControl;   
  2. private IMapControl3 pMapControl;   
  3. private IToolbarMenu pToolMenuMap;   
  4. private IToolbarMenu pToolMenuLayer;  

 

在FrmMain窗體的加載事件中初始化這些指針:

 

  1. // 取得 MapControl 和 PageLayoutControl 的引用   
  2. pTocControl = (ITOCControl2)axTOCControl1.Object;   
  3. pMapControl = (IMapControl3)axMapControl1.Object;   
  4. // 創建菜單   
  5. pToolMenuMap = new ToolbarMenuClass();   
  6. pToolMenuLayer = new ToolbarMenuClass();  

 

如此便建立了新的菜單,但其中沒有實際的菜單項,具體的命令或者工具必須作為菜單項添加到菜單中才能實現相應的功能。

在添加菜單項之前,得先實現相應命令或工具。下面自定義一個縮放至圖層的命令,添加一個類ZoomToLayer.cs至該項目,繼承自ESRI.ArcGIS.ADF.BaseClasses.BaseCommand。BaseCommand是一個抽象類,它為開發人員建立自定義命令項提供了一種有效的途徑。重寫基類的OnCreate和OnClick方法,實現縮放圖層至完整的顯示于地圖控件中。完整代碼如下。

 

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Text;   
  4. using ESRI.ArcGIS.ADF.BaseClasses;   
  5. using ESRI.ArcGIS.Carto;   
  6. using ESRI.ArcGIS.Controls;   
  7. namespace ArcEngine3_3   
  8. {   
  9. class ZoomToLayer : BaseCommand   
  10. {   
  11. //定義指針   
  12. private IMapControl3 pMapControl;   
  13. public ZoomToLayer()   
  14. {   
  15. base.m_caption = "放大至該圖層";   
  16. }   
  17. //重寫BaseCommand基類的虛擬方法OnClick()   
  18. public override void OnClick()   
  19. {   
  20. ILayer pLayer = (ILayer)pMapControl.CustomProperty;   
  21. pMapControl.Extent = pLayer.AreaOfInterest;   
  22. }   
  23. //重寫BaseCommand基類的抽象方法OnCreate(object hook)   
  24. public override void OnCreate(object hook)   
  25. {   
  26. pMapControl = (IMapControl3)hook;   
  27. }   
  28. }   
  29. }  

 

除自定義實現命令或者工具之外, ArcGIS Engine內置了許多可以直接調用的常用命令和工具,如ControlsAddDataCommandClass、ControlsClearSelectionCommandClass等,也可以直接調用AE內置的菜單,如ControlsFeatureSelectionMenu。

建立好自定義命令或工具后,就可以向菜單中添加對應的菜單項了。在FrmMain窗體的加載事件中添加菜單項。

 

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

 

設置菜單的hook

 

  1. pToolMenuLayer.SetHook(pMapControl);  

 

現在有了菜單,需要在TocControl中右鍵彈出,所以在其OnMouseDown/OnMouseUp事件中獲取鼠標點擊信息,然后彈出對應菜單即可。

 

  1. //獲取鼠標點擊信息   
  2. axTOCControl1.HitTest(e.x, e.y, ref pTocItem, ref pBasicMap, ref pLayer, ref oLegendGroup, ref oIndex);   
  3. if (e.button == 2)   
  4. {   
  5. if (pTocItem == esriTOCControlItem.esriTOCControlItemMap)   
  6. {   
  7. pTocControl.SelectItem(pBasicMap, null);   
  8. }   
  9. else   
  10. {   
  11. pTocControl.SelectItem(pLayer, null);   
  12. }   
  13. //設置CustomProperty為layer (用于自定義的Layer命令)   
  14. pMapControl.CustomProperty = pLayer;   
  15. //彈出右鍵菜單   
  16. if (pTocItem == esriTOCControlItem.esriTOCControlItemMap)   
  17. {   
  18. pToolMenuMap.PopupMenu(e.x, e.y, pTocControl.hWnd);   
  19. }   
  20. else   
  21. {   
  22. pToolMenuLayer.PopupMenu(e.x, e.y, pTocControl.hWnd);   
  23. }   
  24. }  

 

用同樣的方法可以為TocControl中的地圖、圖層、符號以及為MapControl等添加各自的右鍵菜單。最終實現效果如下。

【編輯推薦】

  1. Konqueror右鍵菜單的擴展
  2. 技術分享 添加FLex右鍵菜單的方法
  3. 如何在C#添加鼠標右鍵菜單
  4. ASP.NET MVC 2中實現右鍵菜單和簡單分頁

 

責任編輯:于鐵 來源: 博客園
相關推薦

2021-11-01 05:39:18

Windows 11操作系統微軟

2022-05-18 07:44:13

自定義菜單前端

2009-12-24 10:04:31

WPF右鍵菜單

2011-02-23 09:29:29

Konqueror

2011-09-06 10:00:19

Vista右鍵菜單

2021-07-21 05:31:39

Windows 11操作系統微軟

2021-11-15 22:43:40

Windows 11操作系統微軟

2010-07-29 13:18:45

Flex右鍵菜單

2010-07-29 13:27:13

Flex右鍵菜單

2011-07-25 14:49:36

jQuery

2021-07-26 18:20:04

微軟Windows 11Windows

2010-08-02 09:18:39

ASP.NET MVC

2009-08-18 11:17:37

C#添加鼠標右鍵

2021-01-05 09:38:28

開發Node代碼

2021-12-08 09:46:05

IDEAORM代碼

2021-01-21 12:04:05

Windows 10UI界面微軟

2009-08-18 09:03:19

Windows 7磁盤碎片整理

2021-12-14 09:20:30

微軟Windows 11右鍵菜單

2021-10-09 06:42:43

Windows 11WinRAR微軟

2022-03-13 15:39:35

Windows 11微軟修復
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品国产成人 | 亚洲午夜视频 | 黄久久久 | 亚洲国产成人精品女人 | 人人爽人人爽人人片av | 日韩快播电影网 | 亚洲天堂成人在线视频 | www.国产精品 | 亚洲成人黄色 | 国产成人综合在线 | 日韩第一夜| 国产精品久久久久免费 | 91热在线 | 亚洲精品久久久久久国产精华液 | 一级片视频免费 | 米奇狠狠鲁 | 久久精品国产一区二区电影 | 国产欧美在线观看 | 亚洲福利网站 | 你懂的在线视频播放 | 亚洲电影一区二区三区 | 成人免费观看网站 | 久久一区二区三区免费 | 四虎影院免费在线 | 日日骚网 | 久久夜夜| 日韩av成人在线 | 国产 日韩 欧美 制服 另类 | h视频免费观看 | 国产一级免费在线观看 | 高清国产午夜精品久久久久久 | 久久av一区二区 | 亚洲国产精选 | 性色在线 | jlzzjlzz欧美大全| 国产精品美女久久久久久免费 | 国产精品视频久久久 | 亚洲国产成人精品女人久久久 | 欧美在线资源 | 欧美激情精品久久久久久 | 国产人成精品一区二区三 |