📄 zoomout.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 + -