ArcEngine开发之自定义工具栏--地图放大、缩小(C#)

1、放大命令实现

创建GIS类,选择Base Command模版,类的名称为ZoomIn,选择第2类:ArcMap MapControl or PageLayoutControl command

该类的源代码为:

using System;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.ADF.CATIDs;
using System.Runtime.InteropServices;

namespace GIS
{
	[ClassInterface(ClassInterfaceType.None)]
	[Guid("2C214724-BFA2-4e8c-BC5D-775C67FA6F51")]

	public class ZoomIn : ICommand, ITool
	{
        #region COM Registration Function(s)
        [ComRegisterFunction()]
        [ComVisible(false)]
        static void RegisterFunction(Type registerType)
        {
            // Required for ArcGIS Component Category Registrar support
            ArcGISCategoryRegistration(registerType);

            //
            // TODO: Add any COM registration code here
            //
        }

        [ComUnregisterFunction()]
        [ComVisible(false)]
        static void UnregisterFunction(Type registerType)
        {
            // Required for ArcGIS Component Category Registrar support
            ArcGISCategoryUnregistration(registerType);

            //
            // TODO: Add any COM unregistration code here
            //
        }

        #region ArcGIS Component Category Registrar generated code
        /// <summary>
        /// Required method for ArcGIS Component Category registration -
        /// Do not modify the contents of this method with the code editor.
        /// </summary>
        private static void ArcGISCategoryRegistration(Type registerType)
        {
            string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{
  {
  {0}}}", registerType.GUID);
            ControlsCommands.Register(regKey);

        }
        /// <summary>
        /// Required method for ArcGIS Component Category unregistration -
        /// Do not modify the contents of this method with the code editor.
        /// </summary>
        private static void ArcGISCategoryUnregistration(Type registerType)
        {
            string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{
  {
  {0}}}", registerType.GUID);
            ControlsCommands.Unregister(regKey);

        }

        #endregion
        #endregion
		[DllImport("gdi32.dll")]
		static extern bool DeleteObject(IntPtr hObject);

		private System.Drawing.Bitmap m_bitmap;
		private IntPtr m_hBitmap;
		private IHookHelper m_pHookHelper;
		private INewEnvelopeFeedback m_feedBack;
		private IPoint m_point;
		private Boolean m_isMouseDown;
		private System.Windows.Forms.Cursor m_zoomInCur;
		private System.Windows.Forms.Cursor m_moveZoomInCur;

		public ZoomIn()
		{
			//Load resources
			string[] res = GetType().Assembly.GetManifestResourceNames();
			if(res.GetLength(0) > 0)
			{
				m_bitmap = new System.Drawing.Bitmap(GetType().Assembly.GetManifestResourceStream(GetType(), "ZoomIn.bmp"));
				if(m_bitmap != null)
				{
					m_bitmap.MakeTransparent(m_bitmap.GetPixel(1,1));
					m_hBitmap = m_bitmap.GetHbitmap();
				}
			}
			m_pHookHelper = new HookHelperClass ();
		}
	
		~ZoomIn()
		{
			if(m_hBitmap.ToInt32() != 0)
				DeleteObject(m_hBitmap);
			
			m_pHookHelper = null;
			m_zoomInCur = null;
			m_moveZoomInCur = null;
		}

		#region ICommand Members

		public void OnClick()
		{
		}

		public string Message
		{
			get
			{
				return "zooms the Display In By Rectangle or Single Click";
			}
		}

		public int Bit
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于C#ArcEngine二次开发是一种利用ArcGIS Engine开发工具C#编程语言来实现GIS应用程序的方法。ArcEngine是一种基于组件的GIS开发平台,它提供了一系列的API和工具,可以帮助开发人员快速构建高效、灵活、可定制的GIS应用程序。C#是一种面向对象的编程语言,它具有简单易学、语法清晰、可读性强等特点,非常适合用于GIS应用程序的开发。基于C#ArcEngine二次开发可以实现各种功能,如地图显示、数据查询、空间分析、地图制图等,可以广泛应用于各种领域,如城市规划、土地利用、环境保护、资源管理等。 ### 回答2: ++的编程语言,它有什么优点? C++ 是一种功能强大的编程语言,它几乎拥有 C 语言所有的优点,还可以在面向对象编程方面提供更高效和灵活的方式。下面是 C++ 的几个主要优点: 1. 高效性:C++ 是一种高效的编程语言。与其他编程语言相比,C++ 的执行速度更快,它使用了更少的内存和 CPU 周期,因此可以为需要高性能的应用程序提供更好的支持。 2. 跨平台性:C++ 的编译器可以运行在许多平台上,包括 Windows、MacOS、Linux、Android 和 iOS 等。这使得 C++ 成为一种支持跨平台开发的编程语言,具有极高的灵活性和可扩展性。 3. 面向对象编程:C++ 的面向对象编程能力非常强大。它支持多态、继承和封装等特性,使得面向对象编程更加容易和灵活。 4. 库管理:C++ 提供了许多强大的库,使得开发人员可以轻松地访问各种常用功能,例如文件 I/O、字符串处理、图形界面等。这些库可以大大提高开发人员的效率,减少重复劳动。 5. 可扩展性:C++ 还具有很高的可扩展性。开发人员可以使用 C++ 来编写模块、插件和扩展程序,以满足特定的需求。此外,C++ 还提供了丰富的 API,使得开发人员可以在其程序中使用其他编程语言和技术。 总的来说,C++ 是一种功能强大、高效、跨平台、面向对象、可扩展的编程语言。它在许多行业和领域中都有广泛的应用,例如游戏开发、嵌入式系统、图形界面等。对于需要高性能和高可靠性的应用程序开发来说,C++ 是一种不错的选择。 ### 回答3: 语言的网络编程的特点是什么? C语言作为一种高效、简洁、可移植的编程语言,在网络编程中也有一定的应用。C语言基于网络编程的特点主要有以下几个方面: 1.底层控制:C语言网络编程的一个重要特点是可以对网络协议的底层进行直接控制,比如可以进行原始套接字编程。这种方式可以对网络数据包进行非常细致的处理和控制,使网络程序能够更好地适应各种各样的网络环境。 2.高效性:C语言是一种高效的编程语言,它可以为网络应用程序提供高效的性能。C语言可以通过优化算法和数据结构,降低网络应用程序的延迟和响应时间,提高网络应用程序的吞吐量,保证网络的快速响应。 3.可移植性:C语言是一种可移植的编程语言,可以在多种平台上进行开发和编译。因此,使用C语言开发网络应用程序能够保证程序在不同的操作系统和硬件平台上都能够正常运行。 4.丰富的库函数:C语言提供了丰富的库函数,可以在网络编程中提供各种功能的支持。比如可以通过各种库函数实现TCP/UDP套接字编程、服务器端编程、客户端编程、线程编程等各种网络编程功能。 总之,C语言在网络编程中具有非常重要的地位。C语言网络编程的特点主要包括底层控制、高效性、可移植性和丰富的库函数。这些特点使得C语言成为网络编程开发者的首选语言之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值