# Projection class

Namespace: [Grasshopper2.UI.Flex](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.ui.flex.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public class Projection
```

Immutable projection for an IControl.

## Constructors

- [Projection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/ctor.md): Create a new projection.

## Properties

- [ContentPixelsPerControlPixel](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/contentpixelspercontrolpixel.md): Gets the number of content pixels that fit inside a single control pixel.
- [ControlPixelsPerContentPixel](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/controlpixelspercontentpixel.md): Gets the number of control pixels that fit inside a single content pixel.
- [Origin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/origin.md): Gets the origin point.
- [TransformMatrix](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/transformmatrix.md): Gets the transform matrix associated with this projection.
- [Zoom](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/zoom.md): Gets the zoom factor.
- [ZoomInverse](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/zoominverse.md): Gets the reciprocal (one over) of the zoom factor.

## Methods

- [CushionProjection](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/cushionprojection.md): Cushion a projection so that the contents of a control are not moved too far outside the viewable region.
- [Interpolate](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/interpolate.md): (static) Interpolate between two projections.
- [PerformDollyZoom](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/performdollyzoom.md): (2 overloads) Zoom this projection while affecting the origin. Only the vertical motion matters and zooming always snaps to 100%.
- [PerformPan](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/performpan.md): (2 overloads) Pan this projection.
- [PerformZoom](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/performzoom.md): (2 overloads) Zoom this projection without affecting the origin. Only the vertical motion matters and zooming always snaps to 100%.
- [SetCentre](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/setcentre.md): Create a new projection with the origin set such that a specific point is in the centre of the frame.
- [SetFrame](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/setframe.md): Create a new projection ensuring a content rectangle is fully visible within a framing rectangle.
- [SetOrigin](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/setorigin.md): Create a new projection using a different origin.
- [SetZoom](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/setzoom.md): Create a new projection using a different zoom.

## Operators

- [operator *](https://developer.rhino3d.com/api/gh2/type/grasshopper2.ui.flex.projection/op-multiply.md): (static) Multiply two projections.
