# Matrix.RotateAtMatrix.RotateAtMatrix.RotateAtMatrix.RotateAt Method

## Definition

Applies a clockwise rotation about the specified point to this Matrix by prepending the rotation.

 RotateAt(Single, PointF) RotateAt(Single, PointF) RotateAt(Single, PointF) RotateAt(Single, PointF) Applies a clockwise rotation to this Matrix around the point specified in the `point` parameter, and by prepending the rotation. RotateAt(Single, PointF, MatrixOrder) RotateAt(Single, PointF, MatrixOrder) RotateAt(Single, PointF, MatrixOrder) RotateAt(Single, PointF, MatrixOrder) Applies a clockwise rotation about the specified point to this Matrix in the specified order.

## RotateAt(Single, PointF)RotateAt(Single, PointF)RotateAt(Single, PointF)RotateAt(Single, PointF)

Applies a clockwise rotation to this Matrix around the point specified in the `point` parameter, and by prepending the rotation.

``````public:
void RotateAt(float angle, System::Drawing::PointF point);``````
``public void RotateAt (float angle, System.Drawing.PointF point);``
``member this.RotateAt : single * System.Drawing.PointF -> unit``
``Public Sub RotateAt (angle As Single, point As PointF)``

#### Parameters

angle
Single Single Single Single

The angle (extent) of the rotation, in degrees.

point
PointF PointF PointF PointF

A PointF that represents the center of the rotation.

### Examples

The following code example demonstrates using a Matrix and the Transform method to rotate a string. This example is designed to be used with Windows Forms. Create a form and paste the following code into it. Call the `DrawVerticalStringFromBottomUp` method in the form's Paint event handler, passing `e` as PaintEventArgs.

``````private:
void DrawVerticalStringFromBottomUp( PaintEventArgs^ e )
{
// Create the string to draw on the form.
String^ text = "Can you read this?";

// Create a GraphicsPath.
System::Drawing::Drawing2D::GraphicsPath^ path = gcnew System::Drawing::Drawing2D::GraphicsPath;

// Add the string to the path; declare the font, font style, size, and
// vertical format for the string.
path->AddString( text, this->Font->FontFamily, 1, 15, PointF(0.0F,0.0F), gcnew StringFormat( StringFormatFlags::DirectionVertical ) );

// Declare a matrix that will be used to rotate the text.
System::Drawing::Drawing2D::Matrix^ rotateMatrix = gcnew System::Drawing::Drawing2D::Matrix;

// Set the rotation angle and starting point for the text.
rotateMatrix->RotateAt( 180.0F, PointF(10.0F,100.0F) );

// Transform the text with the matrix.
path->Transform(rotateMatrix);

// Set the SmoothingMode to high quality for best readability.
e->Graphics->SmoothingMode = System::Drawing::Drawing2D::SmoothingMode::HighQuality;

// Fill in the path to draw the string.
e->Graphics->FillPath( Brushes::Red, path );

// Dispose of the path.
delete path;
}
``````
``````public void DrawVerticalStringFromBottomUp(PaintEventArgs e)
{

// Create the string to draw on the form.
string text = "Can you read this?";

// Create a GraphicsPath.
System.Drawing.Drawing2D.GraphicsPath path =
new System.Drawing.Drawing2D.GraphicsPath();

// Add the string to the path; declare the font, font style, size, and
// vertical format for the string.
new PointF(0.0F, 0.0F),
new StringFormat(StringFormatFlags.DirectionVertical));

// Declare a matrix that will be used to rotate the text.
System.Drawing.Drawing2D.Matrix rotateMatrix =
new System.Drawing.Drawing2D.Matrix();

// Set the rotation angle and starting point for the text.
rotateMatrix.RotateAt(180.0F, new PointF(10.0F, 100.0F));

// Transform the text with the matrix.
path.Transform(rotateMatrix);

// Set the SmoothingMode to high quality for best readability.
e.Graphics.SmoothingMode =
System.Drawing.Drawing2D.SmoothingMode.HighQuality;

// Fill in the path to draw the string.
e.Graphics.FillPath(Brushes.Red, path);

// Dispose of the path.
path.Dispose();

}
``````
``````Public Sub DrawVerticalStringFromBottomUp(ByVal e As PaintEventArgs)

' Create the string to draw on the form.
Dim text As String = "Can you read this?"

' Create a GraphicsPath.
Dim path As New System.Drawing.Drawing2D.GraphicsPath

' Add the string to the path; declare the font, font style, size, and
' vertical format for the string.
path.AddString(text, Me.Font.FontFamily, 1, 15, New PointF(0.0F, 0.0F), _
New StringFormat(StringFormatFlags.DirectionVertical))

' Declare a matrix that will be used to rotate the text.
Dim rotateMatrix As New System.Drawing.Drawing2D.Matrix

' Set the rotation angle and starting point for the text.
rotateMatrix.RotateAt(180.0F, New PointF(10.0F, 100.0F))

' Transform the text with the matrix.
path.Transform(rotateMatrix)

' Set the SmoothingMode to high quality for best readability.
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality

' Fill in the path to draw the string.
e.Graphics.FillPath(Brushes.Red, path)

' Dispose of the path.
path.Dispose()

End Sub
``````

## RotateAt(Single, PointF, MatrixOrder)RotateAt(Single, PointF, MatrixOrder)RotateAt(Single, PointF, MatrixOrder)RotateAt(Single, PointF, MatrixOrder)

Applies a clockwise rotation about the specified point to this Matrix in the specified order.

``````public:
void RotateAt(float angle, System::Drawing::PointF point, System::Drawing::Drawing2D::MatrixOrder order);``````
``public void RotateAt (float angle, System.Drawing.PointF point, System.Drawing.Drawing2D.MatrixOrder order);``
``member this.RotateAt : single * System.Drawing.PointF * System.Drawing.Drawing2D.MatrixOrder -> unit``
``Public Sub RotateAt (angle As Single, point As PointF, order As MatrixOrder)``

#### Parameters

angle
Single Single Single Single

The angle of the rotation, in degrees.

point
PointF PointF PointF PointF

A PointF that represents the center of the rotation.

order
MatrixOrder MatrixOrder MatrixOrder MatrixOrder

A MatrixOrder that specifies the order (append or prepend) in which the rotation is applied.

### Examples

The following code example is designed for use with Windows Forms, and it requires PaintEventArgs`e`, an Paint event object. The code performs the following actions:

• Draws a rectangle to the screen prior to applying a rotation transform (the blue rectangle).

• Creates a matrix and rotates it 45 degrees around a specified point.

• Applies this matrix transform is to the rectangle.

• Draws the transformed rectangle to the screen (the red rectangle).

Notice that the red rectangle has been rotated around the upper left-hand corner of the rectangle (the rotation point specified the RotateAt method).

``````public:
void RotateAtExample( PaintEventArgs^ e )
{
Pen^ myPen = gcnew Pen( Color::Blue,1.0f );
Pen^ myPen2 = gcnew Pen( Color::Red,1.0f );
PointF rotatePoint = PointF(150.0f,50.0f);

// Draw the rectangle to the screen before applying the
// transform.
e->Graphics->DrawRectangle( myPen, 150, 50, 200, 100 );

// Create a matrix and rotate it 45 degrees.
Matrix^ myMatrix = gcnew Matrix;
myMatrix->RotateAt( 45, rotatePoint, MatrixOrder::Append );

// Draw the rectangle to the screen again after applying the
// transform.
e->Graphics->Transform = myMatrix;
e->Graphics->DrawRectangle( myPen2, 150, 50, 200, 100 );
}
``````
``````public void RotateAtExample(PaintEventArgs e)
{
Pen myPen = new Pen(Color.Blue, 1);
Pen myPen2 = new Pen(Color.Red, 1);
PointF rotatePoint = new PointF(150.0f, 50.0f);

// Draw the rectangle to the screen before applying the
// transform.
e.Graphics.DrawRectangle(myPen, 150, 50, 200, 100);

// Create a matrix and rotate it 45 degrees.
Matrix myMatrix = new Matrix();
myMatrix.RotateAt(45, rotatePoint, MatrixOrder.Append);

// Draw the rectangle to the screen again after applying the
// transform.
e.Graphics.Transform = myMatrix;
e.Graphics.DrawRectangle(myPen2, 150, 50, 200, 100);
}
``````
``````Public Sub RotateAtExample(ByVal e As PaintEventArgs)
Dim myPen As New Pen(Color.Blue, 1)
Dim myPen2 As New Pen(Color.Red, 1)
Dim rotatePoint As New PointF(150.0F, 50.0F)

' Draw the rectangle to the screen before applying the
' transform.
e.Graphics.DrawRectangle(myPen, 150, 50, 200, 100)

' Create a matrix and rotate it 45 degrees.
Dim myMatrix As New Matrix
myMatrix.RotateAt(45, rotatePoint, MatrixOrder.Append)

' Draw the rectangle to the screen again after applying the
' transform.
e.Graphics.Transform = myMatrix
e.Graphics.DrawRectangle(myPen2, 150, 50, 200, 100)
End Sub
``````