ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Geometry Namespace / GeometryEngine Class / Scale Method / Scale(Geometry,MapPoint,Double,Double) Method
The geometry to scale.
The origin around which the geometry will be scaled.
The scale factor along the X-axis.
The scale factor along the Y-axis.
Example

In This Topic
    Scale(Geometry,MapPoint,Double,Double) Method
    In This Topic
    Scales the geometry about the specified origin.
    Syntax
    Public Overloads Function Scale( _
       ByVal geometry As Geometry, _
       ByVal origin As MapPoint, _
       ByVal sx As Double, _
       ByVal sy As Double _
    ) As Geometry

    Parameters

    geometry
    The geometry to scale.
    origin
    The origin around which the geometry will be scaled.
    sx
    The scale factor along the X-axis.
    sy
    The scale factor along the Y-axis.

    Return Value

    The scaled geometry. If the input geometry is empty, then it is returned unchanged.
    Exceptions
    ExceptionDescription
    Either geometry or origin or both are null.
    The method is not implemented for GeometryBag.
    Incompatible spatial references between the input geometries.
    Remarks

    GeometryEngine Scale

    Example
    Scale a geometry
    List<MapPoint> pts = new List<MapPoint>();
    pts.Add(MapPointBuilderEx.CreateMapPoint(1.0, 1.0, 3.0));
    pts.Add(MapPointBuilderEx.CreateMapPoint(1.0, 3.0, 3.0));
    pts.Add(MapPointBuilderEx.CreateMapPoint(3, 3, 3.0));
    pts.Add(MapPointBuilderEx.CreateMapPoint(3.0, 1.0, 3.0));
    
    MapPoint midPt = MapPointBuilderEx.CreateMapPoint(1.5, 1.5);
    
    // polyline
    Polyline polyline = PolylineBuilderEx.CreatePolyline(pts);
    // polyline.Length = 6
    // polyline.Length3D = 0
    Geometry g = GeometryEngine.Instance.Scale(polyline, midPt, 0.5, 0.5);
    Polyline resultPolyline = g as Polyline;
    // resultPolyline.length  = 3
    // resultPolyline.Points[0] = 1.25, 1.25, 3
    // resultPolyline.Points[1] = 1.25, 2.25, 3
    // resultPolyline.Points[2] = 2.25, 2.25, 3
    // resultPolyline.Points[3] = 2.25, 1.25, 3
    
    // 3D point - scale in 3d
    MapPoint midPtZ = MapPointBuilderEx.CreateMapPoint(1.5, 1.5, 1);
    g = GeometryEngine.Instance.Scale(polyline, midPtZ, 0.5, 0.5, 0.25);
    resultPolyline = g as Polyline;
    // resultPolyline.Points[0] = 1.25, 1.25, 1.5
    // resultPolyline.Points[1] = 1.25, 2.25, 1.5
    // resultPolyline.Points[2] = 2.25, 2.25, 1.5
    // resultPolyline.Points[3] = 2.25, 1.25, 1.5
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also