GdPicture.NET.14
GdPicture14 Namespace / GdPicturePDF Class / AddTransformationMatrix Method
The first element of the transformation matrix. For more details please see the summary above.
The second element of the transformation matrix. For more details please see the summary above.
The third element of the transformation matrix. For more details please see the summary above.
The fourth element of the transformation matrix. For more details please see the summary above.
The distance, in points, from the left, to translate the origin of the coordinate system in the horizontal dimension.
The distance, in points, from the bottom, to translate the origin of the coordinate system in the vertical dimension.
Example





In This Topic
AddTransformationMatrix Method (GdPicturePDF)
In This Topic
Modifies the current transformation matrix (CTM) applying the concatenation with the transformation matrix you have specified. The resulting transformation affects all subsequent drawing operations on the currently selected page of the loaded PDF document.

A transformation matrix is a part of the graphics state and it specifies the relationship between two coordinate spaces. By modifying a transformation matrix, objects can be scaled, rotated, translated, or transformed in other ways. Although the transformation parameters specify a matrix, they are written as six separate numbers. The matrix can represent any linear transformation from one coordinate system to another.

- Translations are specified as [ 1, 0, 0, 1, tx, ty ], where tx and ty are the distances to translate the origin of the coordinate system in the horizontal and vertical dimensions, respectively.

- Scaling is obtained by [ sx, 0, 0, sy, 0, 0 ]. This scales the coordinates so that 1 unit in the horizontal and vertical dimensions of the new coordinate system is the same size as sx and sy units, respectively, in the previous coordinate system.

- Rotations are produced by [ cos a, sin a, -sin a, cos a, 0, 0 ], which has the effect of rotating the coordinate system axes by an angle a counterclockwise.

- Skew is specified by [ 1, tan a, tan b, 1, 0, 0 ], which skews the x axis by an angle a and the y axis by an angle b.

For more details, please refer to the PDF Reference, Section "Common Transformations".

Syntax
'Declaration
 
Public Function AddTransformationMatrix( _
   ByVal a As Single, _
   ByVal b As Single, _
   ByVal c As Single, _
   ByVal d As Single, _
   ByVal e As Single, _
   ByVal f As Single _
) As GdPictureStatus
public GdPictureStatus AddTransformationMatrix( 
   float a,
   float b,
   float c,
   float d,
   float e,
   float f
)
public function AddTransformationMatrix( 
    a: Single;
    b: Single;
    c: Single;
    d: Single;
    e: Single;
    f: Single
): GdPictureStatus; 
public function AddTransformationMatrix( 
   a : float,
   b : float,
   c : float,
   d : float,
   e : float,
   f : float
) : GdPictureStatus;
public: GdPictureStatus AddTransformationMatrix( 
   float a,
   float b,
   float c,
   float d,
   float e,
   float f
) 
public:
GdPictureStatus AddTransformationMatrix( 
   float a,
   float b,
   float c,
   float d,
   float e,
   float f
) 

Parameters

a
The first element of the transformation matrix. For more details please see the summary above.
b
The second element of the transformation matrix. For more details please see the summary above.
c
The third element of the transformation matrix. For more details please see the summary above.
d
The fourth element of the transformation matrix. For more details please see the summary above.
e
The distance, in points, from the left, to translate the origin of the coordinate system in the horizontal dimension.
f
The distance, in points, from the bottom, to translate the origin of the coordinate system in the vertical dimension.

Return Value

A member of the GdPictureStatus enumeration. If the method has been successfully followed, then the return value is GdPictureStatus.OK.

We strongly recommend always checking this status first.

Remarks
This method is only allowed for use with non-encrypted documents.

Be aware also that graphics state parameters are initialized to their default values at the beginning of each page.

Just to remind you that 1 point is equivalent to 1/72 of an inch.

Example
How to draw various rectangles without changing their coordinates using the different transformation matrices.
Dim caption As String = "Example: AddTransformationMatrix"
Dim gdpicturePDF As New GdPicturePDF()
Dim status As GdPictureStatus = gdpicturePDF.NewPDF()
If status = GdPictureStatus.OK Then
    gdpicturePDF.SetOrigin(PdfOrigin.PdfOriginTopLeft)
    gdpicturePDF.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitMillimeter)
    If (gdpicturePDF.NewPage(210, 297) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.ResetGraphicsState() = GdPictureStatus.OK) AndAlso 'Setting the default graphics state.
       (gdpicturePDF.DrawRectangle(0, 0, 40, 20, True, True) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.SetLineWidth(2) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.SetLineColor(0, 0, 255) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.SetFillColor(0, 255, 255) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.DrawRectangle(10, 40, 40, 20, True, True) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.SaveGraphicsState() = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddTransformationMatrix(1, 0, 0, 1, 100, -100) = GdPictureStatus.OK) AndAlso 'translation
       (gdpicturePDF.DrawRectangle(10, 40, 40, 20, True, True) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.RestoreGraphicsState() = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddTransformationMatrix(1, 0.2F, 0, 1, 100, -200) = GdPictureStatus.OK) AndAlso 'vertical shear and translation
       (gdpicturePDF.DrawRectangle(10, 40, 40, 20, True, True) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.AddTransformationMatrix(1, 0.2F, 0.1F, 1, 100, -150) = GdPictureStatus.OK) AndAlso 'vertical and horizontal shear and translation
       (gdpicturePDF.DrawRectangle(10, 40, 40, 20, True, True) = GdPictureStatus.OK) AndAlso
       (gdpicturePDF.ResetGraphicsState() = GdPictureStatus.OK) AndAlso 'Resetting back to the default graphics state.
       (gdpicturePDF.DrawRectangle(0, 180, 40, 20, True, True) = GdPictureStatus.OK) Then
        status = gdpicturePDF.SaveToFile("test_TransformationMatrix.pdf")
        If status = GdPictureStatus.OK Then
            MessageBox.Show("The example has been followed successfully and the file has been saved.", caption)
        Else
            MessageBox.Show("The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption)
        End If
    Else
        MessageBox.Show("The example has not been followed successfully." + vbCrLf + "The last known status is " + gdpicturePDF.GetStat().ToString(), caption)
    End If
Else
    MessageBox.Show("The NewPDF() method has failed with the status: " + status.ToString(), caption)
End If
gdpicturePDF.Dispose()
string caption = "Example: AddTransformationMatrix";
GdPicturePDF gdpicturePDF = new GdPicturePDF();
GdPictureStatus status = gdpicturePDF.NewPDF();
if (status == GdPictureStatus.OK)
{
    gdpicturePDF.SetOrigin(PdfOrigin.PdfOriginTopLeft);
    gdpicturePDF.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitMillimeter);
    if ((gdpicturePDF.NewPage(210, 297) == GdPictureStatus.OK) &&
        (gdpicturePDF.ResetGraphicsState() == GdPictureStatus.OK) && //Setting the default graphics state.
        (gdpicturePDF.DrawRectangle(0, 0, 40, 20, true, true) == GdPictureStatus.OK) &&
        (gdpicturePDF.SetLineWidth(2) == GdPictureStatus.OK) &&
        (gdpicturePDF.SetLineColor(0, 0, 255) == GdPictureStatus.OK) &&
        (gdpicturePDF.SetFillColor(0, 255, 255) == GdPictureStatus.OK) &&
        (gdpicturePDF.DrawRectangle(10, 40, 40, 20, true, true) == GdPictureStatus.OK) &&
        (gdpicturePDF.SaveGraphicsState() == GdPictureStatus.OK) &&
        //translation
        (gdpicturePDF.AddTransformationMatrix(1, 0, 0, 1, 100, -100) == GdPictureStatus.OK) &&
        (gdpicturePDF.DrawRectangle(10, 40, 40, 20, true, true) == GdPictureStatus.OK) &&
        (gdpicturePDF.RestoreGraphicsState() == GdPictureStatus.OK) &&
        //vertical shear and translation
        (gdpicturePDF.AddTransformationMatrix(1, 0.2f, 0, 1, 100, -200) == GdPictureStatus.OK) &&
        (gdpicturePDF.DrawRectangle(10, 40, 40, 20, true, true) == GdPictureStatus.OK) &&
        //vertical and horizontal shear and translation
        (gdpicturePDF.AddTransformationMatrix(1, 0.2f, 0.1f, 1, 100, -150) == GdPictureStatus.OK) &&
        (gdpicturePDF.DrawRectangle(10, 40, 40, 20, true, true) == GdPictureStatus.OK) &&
        (gdpicturePDF.ResetGraphicsState() == GdPictureStatus.OK) && //Resetting back to the default graphics state.
        (gdpicturePDF.DrawRectangle(0, 180, 40, 20, true, true) == GdPictureStatus.OK))
    {
        status = gdpicturePDF.SaveToFile("test_TransformationMatrix.pdf");
        if (status == GdPictureStatus.OK)
            MessageBox.Show("The example has been followed successfully and the file has been saved.", caption);
        else
            MessageBox.Show("The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption);
    }
    else
        MessageBox.Show("The example has not been followed successfully.\nThe last known status is " + gdpicturePDF.GetStat().ToString(), caption);
}
else
    MessageBox.Show("The NewPDF() method has failed with the status: " + status.ToString(), caption);
gdpicturePDF.Dispose();
See Also