在axMap1的MouseDownEvent事件里加入下面代码
代码
MapObjects2.Rectangle rect;
//
范围
switch (axMap1.MousePointer)
{
switch (axMap1.MousePointer)
{
//
放大
case MapObjects2.MousePointerConstants.moZoomIn:
{
rect = axMap1.TrackRectangle(); //得到鼠标拖动范围
if (rect == null || rect.Width < 0.00005 || rect.Height < 0.00005 ) // 如果选择区域很小,可以认为是 单击、点选
{
rect = axMap1.Extent;
rect.ScaleRectangle( 0.5 ); //设置放大比例
}
axMap1.Extent = rect;
break ;
}
// 缩小
case MapObjects2.MousePointerConstants.moZoomOut:
{
MapObjects2.Rectangle Tempr;
Tempr = axMap1.Extent;
rect = axMap1.TrackRectangle();
double NewSR;
if (rect == null || rect.Width < 0.00005 || rect.Height < 0.00005 )
{
if (axMap1.Extent.Width / rect.Width > axMap1.Extent.Height / rect.Height)
{
NewSR = axMap1.Extent.Height / rect.Height;
}
else
{
NewSR = axMap1.Extent.Width / rect.Width;
}
Tempr.ScaleRectangle(NewSR);
}
else
{
Tempr.ScaleRectangle( 2.0 ); //设置缩小比率
}
axMap1.Extent = Tempr;
break ;
}
// 漫游
case MapObjects2.MousePointerConstants.moPan:
{
axMap1.Pan();
break ;
}
.
.
.
case MapObjects2.MousePointerConstants.moZoomIn:
{
rect = axMap1.TrackRectangle(); //得到鼠标拖动范围
if (rect == null || rect.Width < 0.00005 || rect.Height < 0.00005 ) // 如果选择区域很小,可以认为是 单击、点选
{
rect = axMap1.Extent;
rect.ScaleRectangle( 0.5 ); //设置放大比例
}
axMap1.Extent = rect;
break ;
}
// 缩小
case MapObjects2.MousePointerConstants.moZoomOut:
{
MapObjects2.Rectangle Tempr;
Tempr = axMap1.Extent;
rect = axMap1.TrackRectangle();
double NewSR;
if (rect == null || rect.Width < 0.00005 || rect.Height < 0.00005 )
{
if (axMap1.Extent.Width / rect.Width > axMap1.Extent.Height / rect.Height)
{
NewSR = axMap1.Extent.Height / rect.Height;
}
else
{
NewSR = axMap1.Extent.Width / rect.Width;
}
Tempr.ScaleRectangle(NewSR);
}
else
{
Tempr.ScaleRectangle( 2.0 ); //设置缩小比率
}
axMap1.Extent = Tempr;
break ;
}
// 漫游
case MapObjects2.MousePointerConstants.moPan:
{
axMap1.Pan();
break ;
}
.
.
.
这里要设置下鼠标的状态,比如在放大按钮的单击事件下加入:
axMap1.MousePointer = MapObjects2.MousePointerConstants.moZoomIn; //放大,改变鼠标状态
全图:
axMap1.Extent = axMap1.FullExtent;