⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zoomout.cs

📁 C#+arcengine的一个适量数据编辑系统
💻 CS
字号:
using System;
using System.Runtime.InteropServices;

using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.MapControl;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;

namespace Cstest1
{
	/// <summary>
	/// ZoomOut 的摘要说明。
	/// </summary>
	public class ZoomOut : ITool,ICommand                              //从ITool,ICommand继承
	{
		ESRI.ArcGIS.MapControl.AxMapControl m_MapControl;              //设置地图控件对象
		ESRI.ArcGIS.Geometry.IPoint m_PointStart;                      //拖框放大的起点
		ESRI.ArcGIS.Geometry.IPoint m_PointMoveTo;                     //拖框放大的终点
		INewEnvelopeFeedback m_FeedbackEnv;                            //拖框的Envelope

		private bool m_ZoomOutOperation;                               //光标显示的控制变量
		private System.Windows.Forms.Cursor m_zoomOutCur;              //缩小镜光标
		private System.Windows.Forms.Cursor m_moveZoomOutCur;          //拖框缩小时的光标

		public ZoomOut()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}
		#region ITool 成员

		public void OnMouseDown(int button, int shift, int x, int y)
		{
			// TODO:  添加 ZoomOut.OnMouseDown 实现
			if(button==1) 
			{
				m_PointStart=m_MapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x,y);    //获得起始点
			    m_ZoomOutOperation=true;
			}
		}

		
		public void OnMouseMove(int button, int shift, int x, int y)
		{
			// TODO:  添加 ZoomOut.OnMouseMove 实现
			if(button==1) 
			{
				if(m_FeedbackEnv==null)
				{
					m_FeedbackEnv=new NewEnvelopeFeedback();                                         //创建m_FeedbackEnv
					m_FeedbackEnv.Display=m_MapControl.ActiveView.ScreenDisplay;
					m_FeedbackEnv.Start(m_PointStart);
				}
				m_PointMoveTo=m_MapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y);
				m_FeedbackEnv.MoveTo(m_PointMoveTo);                                                 //移动形成拖框大小
			}
		}

		public void OnMouseUp(int button, int shift, int x, int y)
		{
			// TODO:  添加 ZoomOut.OnMouseUp 实现
			IEnvelope m_Env;                                                //缩小视图的Envelope
			double ScaleX,ScaleY;                                           //横向、纵向缩小比例
			if(button==1) 
			{
				m_ZoomOutOperation=false;
				if(m_FeedbackEnv==null)                                     //没有拖框缩小,即鼠标单击缩小                                   
				{
					m_Env=m_MapControl.ActiveView.Extent;
					m_Env.CenterAt(m_PointStart);
					m_Env.Expand(1.5,1.5,true);                             //按固定比率缩小
				}
				else
				{
					m_Env = m_FeedbackEnv.Stop();
					ScaleX=m_MapControl.ActiveView.Extent.Envelope.Width / m_Env.Width ;
					ScaleY=m_MapControl.ActiveView.Extent.Envelope.Height / m_Env.Height ;
					m_Env=m_MapControl.ActiveView.Extent;
//					IPoint m_PointCenter;
//                    m_PointCenter=new PointClass();
//					m_PointCenter.X=(m_Env.XMin + m_Env.XMax) / 2;
//                    m_PointCenter.Y=(m_Env.YMin + m_Env.YMax) / 2;
//					m_Env.CenterAt(m_PointCenter);
					m_Env.Expand(ScaleX,ScaleY,true);                       //使用拖框缩小,计算比率来缩小视图
				}
				m_MapControl.ActiveView.Extent = m_Env;                     //将缩小后的视图范围赋给地图控件显示
				m_FeedbackEnv=null;                                         //注销Feedback拖框
				m_MapControl.ActiveView.Refresh();
			}
		}

		public void OnKeyDown(int keyCode, int shift)
		{
			// TODO:  添加 ZoomOut.OnKeyDown 实现
		}

		public void OnKeyUp(int keyCode, int shift)
		{
			// TODO:  添加 ZoomOut.OnKeyUp 实现
		}

		public int Cursor
		{
			get
			{
				// TODO:  添加 ZoomOut.Cursor getter 实现
				if(m_ZoomOutOperation)
					return m_moveZoomOutCur.Handle.ToInt32();
				else
					return m_zoomOutCur.Handle.ToInt32();
			}
		}

		public bool OnContextMenu(int x, int y)
		{
			// TODO:  添加 ZoomOut.OnContextMenu 实现
			return false;
		}

		public bool Deactivate()
		{
			// TODO:  添加 ZoomOut.Deactivate 实现
			return true;                                               //返回true,保证对象注销时不报错
		}

		public void Refresh(int hdc)
		{
			// TODO:  添加 ZoomOut.Refresh 实现
			
		}

		public void OnDblClick()
		{
			// TODO:  添加 ZoomOut.OnDblClick 实现
		}

		#endregion

		#region ICommand 成员

		public void OnClick()
		{
			// TODO:  添加 ZoomOut.OnClick 实现
		}

		public string Message
		{
			get
			{
				// TODO:  添加 ZoomOut.Message getter 实现
				return null;
			}
		}

		public int Bitmap
		{
			get
			{
				// TODO:  添加 ZoomOut.Bitmap getter 实现
				return 0;
			}
		}

		public void OnCreate(object hook)
		{
			// TODO:  添加 ZoomOut.OnCreate 实现
			m_MapControl=hook as AxMapControl;                        //工具创建时,设置地图控件对象
			m_zoomOutCur = new System.Windows.Forms.Cursor
				              (GetType().Assembly.GetManifestResourceStream(GetType(), "Res.ZoomOut.CUR"));
			m_moveZoomOutCur = new System.Windows.Forms.Cursor
				                   (GetType().Assembly.GetManifestResourceStream(GetType(), "Res.MoveZoomOut.cur"));
	
		}

		public string Caption
		{
			get
			{
				// TODO:  添加 ZoomOut.Caption getter 实现
				return null;
			}
		}

		public string Tooltip
		{
			get
			{
				// TODO:  添加 ZoomOut.Tooltip getter 实现
				return null;
			}
		}

		public int HelpContextID
		{
			get
			{
				// TODO:  添加 ZoomOut.HelpContextID getter 实现
				return 0;
			}
		}

		public string Name
		{
			get
			{
				// TODO:  添加 ZoomOut.Name getter 实现
				return null;
			}
		}

		public bool Checked
		{
			get
			{
				// TODO:  添加 ZoomOut.Checked getter 实现
				return false;
			}
		}

		public bool Enabled
		{
			get
			{
				// TODO:  添加 ZoomOut.Enabled getter 实现
				return false;
			}
		}

		public string HelpFile
		{
			get
			{
				// TODO:  添加 ZoomOut.HelpFile getter 实现
				return null;
			}
		}

		public string Category
		{
			get
			{
				// TODO:  添加 ZoomOut.Category getter 实现
				return null;
			}
		}

		#endregion
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -