# Matrix.Shear method

Applies to: desktop apps only

The Matrix::Shear method updates this matrix with the product of itself and a shearing matrix.

### Syntax

```Status Shear(
[in]  REAL shearX,
[in]  REAL shearY,
[in]  REAL order
);
```

### Parameters

shearX [in]

Type: REAL

Real number that specifies the horizontal shear factor.

shearY [in]

Type: REAL

Real number that specifies the vertical shear factor.

order [in]

Type: REAL

Optional. Element of the MatrixOrder enumeration that specifies the order of the multiplication. MatrixOrderPrepend specifies that the shearing matrix is on the left, and MatrixOrderAppend specifies that the shearing matrix is on the right. The default value is MatrixOrderPrepend.

### Return value

Type:

Type: Status

If the method succeeds, it returns Ok, which is an element of the Status enumeration.

If the method fails, it returns one of the other elements of the Status enumeration.

### Examples

The following example creates a Matrix object and calls the Matrix::Scale method to set the elements of that matrix to a scaling transformation. Then the code calls the Matrix::Shear method to update the matrix with the product of itself and a shearing matrix. At that point, the matrix represents a composite transformation: first scale, then shear. The code uses the matrix to set the world transformation of a Graphics object and then draws a rectangle that is transformed according to the composite transformation.

In the call to Matrix::Shear, the shearX parameter is 3 and the shearY parameter is 0. That particular shearing transformation slides the bottom edge of the rectangle to the right. The distance that the bottom edge slides is shearX multiplied by the height of the rectangle after it is stretched by the scaling transformation.

```
VOID Example_Shear(HDC hdc)
{
Graphics graphics(hdc);
Pen pen(Color(255, 0, 0, 255));

Matrix matrix;
matrix.Scale(2.0f, 2.0f);                     // first a scaling
matrix.Shear(3.0f, 0.0f, MatrixOrderAppend);  // then a shear

graphics.SetTransform(&matrix);
graphics.DrawRectangle(&pen, 0, 0, 100, 50);
}

```

### Requirements

 Minimum supported client Windows XP, Windows 2000 Professional Windows 2000 Server GDI+ 1.0 Gdiplusmatrix.h (include Gdiplus.h) Gdiplus.lib Gdiplus.dll

### See also

Matrix
MatrixOrder
Matrix::Multiply
Matrix::Rotate
Matrix::RotateAt
Matrix::Scale
Matrix::Translate
Transformations
Global and Local Transformations
Matrix Representation of Transformations

Send comments about this topic to Microsoft

Build date: 3/6/2012

ADD
Show: