ArcObjects Library Reference

# Zoom by Ratio and Recenter Snippet

Zoom in ActiveView using a ratio of the current extent and re-center based upon supplied x,y map coordinates.

[C#]
```
///<summary>Zoom in ActiveView using a ratio of the current extent and re-center based upon supplied x,y map coordinates.</summary>
///
///<param name="activeView">An IActiveView interface.</param>
///<param name="zoomRatio">A System.Double that is the ratio to zoom in. Less that 1 zooms in (Example: .75), greater than 1 zooms out (Example: 2).</param>
///<param name="xMap">A System.Double that is the x portion of a point in map units to re-center on.</param>
///<param name="yMap">A System.Double that is the y portion of a point in map units to re-center on.</param>
///
///<remarks>Both the width and height ratio of the zoomed area is preserved.</remarks>
public void ZoomByRatioAndRecenter(ESRI.ArcGIS.Carto.IActiveView activeView, System.Double zoomRatio, System.Double xMap, System.Double yMap)
{
if(activeView == null || zoomRatio < 0)
{
return;
}
ESRI.ArcGIS.Geometry.IEnvelope envelope = activeView.Extent;
ESRI.ArcGIS.Geometry.IPoint point = new ESRI.ArcGIS.Geometry.PointClass();
point.X = xMap;
point.Y = yMap;
envelope.CenterAt(point);
envelope.Expand(zoomRatio, zoomRatio, true);
activeView.Extent = envelope;
activeView.Refresh();
}
```
[Visual Basic .NET]
```
'''<summary>Zoom in ActiveView using a ratio of the current extent and re-center based upon supplied x,y map coordinates.</summary>
'''
'''<param name="activeView">An IActiveView interface.</param>
'''<param name="zoomRatio">A System.Double that is the ratio to zoom in. Less that 1 zooms in (Example: .75), greater than 1 zooms out (Example: 2).</param>
'''<param name="xMap">A System.Double that is the x portion of a point in map units to re-center on.</param>
'''<param name="yMap">A System.Double that is the y portion of a point in map units to re-center on.</param>
'''
'''<remarks>Both the width and height ratio of the zoomed area is preserved.</remarks>
Public Sub ZoomByRatioAndRecenter(ByVal activeView As ESRI.ArcGIS.Carto.IActiveView, ByVal zoomRatio As System.Double, ByVal xMap As System.Double, ByVal yMap As System.Double)

If activeView Is Nothing OrElse zoomRatio < 0 Then
Return
End If

Dim envelope As ESRI.ArcGIS.Geometry.IEnvelope = activeView.Extent
Dim point As ESRI.ArcGIS.Geometry.IPoint = New ESRI.ArcGIS.Geometry.PointClass
point.X = xMap
point.Y = yMap
envelope.CenterAt(point)
envelope.Expand(zoomRatio, zoomRatio, True)

activeView.Extent = envelope
activeView.Refresh()

End Sub
```

Additional Requirements
• The code in this document requires the following References added to the Visual Studio project:
• ESRI.ArcGIS.Carto
• ESRI.ArcGIS.Geometry
• ESRI.ArcGIS.System