System.Drawing [00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 07 D1 FA 57 C4 AE D9 F0 A3 2E 84 AA 0F AE FD 0D E9 E8 FD 6A EC 8F 87 FB 03 76 6C 83 4C 99 92 1E B2 3B E7 9A D9 D5 DC C1 DD 9A D2 36 13 21 02 90 0B 72 3C F9 80 95 7F C4 E1 77 10 8F C6 07 77 4F 29 E8 32 0E 92 EA 05 EC E4 E8 21 C0 A5 EF E8 F1 64 5C 4C 0C 93 C1 AB 99 28 5D 62 2C AA 65 2C 1D FA D6 3D 74 5D 6F 2D E5 F1 7E 5E AF 0F C4 96 3D 26 1C 8A 12 43 65 18 20 6D C0 93 34 4D 5A D2 93] 1.0.3300.0 1.0.5000.0 2.0.0.0 Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details. System.MarshalByRefObject System.IDisposable

In ndptecgdiplus you can store an affine transformation in a object. Because the third column of a matrix that represents an affine transformation is always (0, 0, 1), you specify only the six numbers in the first two columns when you construct a object. The statement Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) constructs the matrix shown in the following figure.

## Composite Transformations

A composite transformation is a sequence of transformations, one followed by the other. Consider the matrices and transformations in the following list:

Matrix A

Rotate 90 degrees

Matrix B

Scale by a factor of 2 in the x direction

Matrix C

Translate 3 units in the y direction

If we start with the point (2, 1) — represented by the matrix [2 1 1] — and multiply by A, then B, then C, the point (2, 1) will undergo the three transformations in the order listed.

[2 1 1]ABC = [-2 5 1]

Rather than store the three parts of the composite transformation in three separate matrices, you can multiply A, B, and C together to get a single 3×3 matrix that stores the entire composite transformation. Suppose ABC = D. Then a point multiplied by D gives the same result as a point multiplied by A, then B, then C.

[2 1 1]D = [-2 5 1]

The following illustration shows the matrices A, B, C, and D.

The fact that the matrix of a composite transformation can be formed by multiplying the individual transformation matrices means that any sequence of affine transformations can be stored in a single object.

The order of a composite transformation is important. In general, rotate, then scale, then translate is not the same as scale, then rotate, then translate. Similarly, the order of matrix multiplication is important. In general, ABC is not the same as BAC.

The class provides several methods for building a composite transformation: , , , , , and . The following example creates the matrix of a composite transformation that first rotates 30 degrees, then scales by a factor of 2 in the y direction, and then translates 5 units in the x direction:

code reference: System.Drawing.CoordinateSystems#11

Encapsulates a 3-by-3 affine matrix that represents a geometric transform. This class cannot be inherited.

- Constructor
  To be added

  Initializes a new instance of the class as the identity matrix.

  1.0.5000.0
  2.0.0.0
- Constructor

  This method initializes the new Matrix such that it represents the geometric transform that maps the rectangle specified by the parameter to the parallelogram defined by the three points in the parameter. The upper-left corner of the rectangle is mapped to the first point in the array, the upper-right corner is mapped to the second point, and the lower-left corner is mapped to the third point. The lower-right point of the parallelogram is implied by the first three.

  Initializes a new instance of the class to the geometric transform defined by the specified rectangle and array of points.

  A structure that represents the rectangle to be transformed.
  An array of three structures that represents the points of a parallelogram to which the upper-left, upper-right, and lower-left corners of the rectangle is to be transformed. The lower-right corner of the parallelogram is implied by the first three corners.
  1.0.5000.0
  2.0.0.0
- Constructor

  This method initializes the new such that it represents the geometric transform that maps the rectangle specified by the parameter to the parallelogram defined by the three points in the parameter. The upper-left corner of the rectangle is mapped to the first point in the array, the upper-right corner is mapped to the second point, and the lower-left corner is mapped to the third point. The lower-right point of the parallelogram is implied by the first three.

  Initializes a new instance of the class to the geometric transform defined by the specified rectangle and array of points.

  A structure that represents the rectangle to be transformed.
  An array of three structures that represents the points of a parallelogram to which the upper-left, upper-right, and lower-left corners of the rectangle is to be transformed. The lower-right corner of the parallelogram is implied by the first three corners.
  1.0.5000.0
  2.0.0.0
- Constructor
  To be added

  Initializes a new instance of the class with the specified elements.

  The value in the first row and first column of the new .
  The value in the first row and second column of the new .
  The value in the second row and first column of the new .
  The value in the second row and second column of the new .
  The value in the third row and first column of the new .
  The value in the third row and second column of the new .
  1.0.5000.0
  2.0.0.0
- Method
  System.Drawing.Drawing2D.Matrix To be added

  Creates an exact copy of this .

  The that this method creates.

  1.0.5000.0
  2.0.0.0
- Method
  System.Void

  Calling Dispose allows the resources used by this object to be reallocated for other purposes.

  Releases all resources used by this .

  This method does not return a value.

  1.0.5000.0
  2.0.0.0
- Property
  System.Single[] To be added: an object of type 'float []'

  The elements m11, m12, m21, m22, dx, and dy of the are represented by the values in the array in that order.

  Gets an array of floating-point values that represents the elements of this .

  1.0.5000.0
  2.0.0.0
- Method
  System.Boolean `` To be added

  Tests whether the specified object is a and is identical to this .

  This method returns true if is the specified identical to this ; otherwise, false.

  The object to test. 1.0.5000.0 2.0.0.0
- Method
  System.Void To be added To be added 1.0.5000.0 2.0.0.0
- Method
  System.Int32 To be added

  Returns a hash code.

  The hash code for this .

  1.0.5000.0
  2.0.0.0
- Method
  System.Void To be added

  Inverts this , if it is invertible.

  1.0.5000.0
  2.0.0.0
- Property
  System.Boolean To be added: an object of type 'bool' To be added

  Gets a value indicating whether this is the identity matrix.

  1.0.5000.0
  2.0.0.0
- Property
  System.Boolean To be added: an object of type 'bool' To be added

  Gets a value indicating whether this is invertible.

  1.0.5000.0
  2.0.0.0
- Method
  System.Void `` To be added

  Multiplies this by the matrix specified in the parameter, by prepending the specified .

  The by which this is to be multiplied. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` ``

  If the specified order is , this is multiplied by the specified matrix in a prepended order. If the specified order is , this is multiplied by the specified matrix in an appended order.

  Multiplies this by the matrix specified in the parameter, and in the order specified in the parameter.

  The by which this is to be multiplied. The that represents the order of the multiplication. 1.0.5000.0 2.0.0.0
- Property
  System.Single To be added: an object of type 'float' To be added

  Gets the x translation value (the dx value, or the element in the third row and first column) of this .

  1.0.5000.0
  2.0.0.0
- Property
  System.Single To be added: an object of type 'float' To be added

  Gets the y translation value (the dy value, or the element in the third row and second column) of this .

  1.0.5000.0
  2.0.0.0
- Method
  System.Void

  The elements on the main diagonal of the identity matrix are 1. All other elements of the identity matrix are 0.

  Resets this to have the elements of the identity matrix.

  1.0.5000.0
  2.0.0.0
- Method
  System.Void `` To be added

  Prepend to this a clockwise rotation, around the origin and by the specified angle.

  The angle of the rotation, in degrees. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` To be added

  Applies a clockwise rotation of an amount specified in the parameter, around the origin (zero x and y coordinates) for this .

  The angle (extent) of the rotation, in degrees. A that specifies the order (append or prepend) in which the rotation is applied to this . 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` To be added

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

  The angle (extent) of the rotation, in degrees. A that represents the center of the rotation. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` `` To be added

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

  The angle of the rotation, in degrees. A that represents the center of the rotation. A that specifies the order (append or prepend) in which the rotation is applied. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` To be added

  Applies the specified scale vector to this by prepending the scale vector.

  The value by which to scale this in the x-axis direction. The value by which to scale this in the y-axis direction. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` `` To be added

  Applies the specified scale vector ( and ) to this using the specified order.

  The value by which to scale this in the x-axis direction. The value by which to scale this in the y-axis direction. A that specifies the order (append or prepend) in which the scale vector is applied to this . 1.0.5000.0 2.0.0.0
- Method
  System.Void `` ``

  The transformation applied in this method is a pure shear only if one of the parameters is 0. Applied to a rectangle at the origin, when the factor is 0, the transformation moves the bottom edge horizontally by times the height of the rectangle. When the factor is 0, it moves the right edge vertically by times the width of the rectangle. Caution is in order when both parameters are nonzero, because the results are hard to predict. For example, if both factors are 1, the transformation is singular (hence noninvertible), squeezing the entire plane to a single line.

  Applies the specified shear vector to this by prepending the shear transformation.

  The horizontal shear factor. The vertical shear factor. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` ``

  The transformation applied in this method is a pure shear only if one of the parameters is 0. Applied to a rectangle at the origin, when the factor is 0, the transformation moves the bottom edge horizontally by times the height of the rectangle. When the factor is 0, it moves the right edge vertically by times the width of the rectangle. Caution is in order when both parameters are nonzero, because the results are hard to predict. For example, if both factors are 1, the transformation is singular (hence noninvertible), squeezing the entire plane to a single line.

  Applies the specified shear vector to this in the specified order.

  The horizontal shear factor. The vertical shear factor. A that specifies the order (append or prepend) in which the shear is applied. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` To be added

  Applies the geometric transform represented by this to a specified array of points.

  An array of structures that represents the points to transform. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` To be added

  Applies the geometric transform represented by this to a specified array of points.

  An array of structures that represents the points to transform. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` To be added

  Applies only the scale and rotate components of this to the specified array of points.

  An array of structures that represents the points to transform. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` To be added

  Multiplies each vector in an array by the matrix. The translation elements of this matrix (third row) are ignored.

  An array of structures that represents the points to transform. 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` To be added

  Applies the specified translation vector ( and ) to this by prepending the translation vector.

  The x value by which to translate this . The y value by which to translate this . 1.0.5000.0 2.0.0.0
- Method
  System.Void `` `` `` To be added

  Applies the specified translation vector to this in the specified order.

  The x value by which to translate this . The y value by which to translate this . A that specifies the order (append or prepend) in which the translation is applied to this . 1.0.5000.0 2.0.0.0
- Method
  System.Void `` To be added

  Multiplies each vector in an array by the matrix. The translation elements of this matrix (third row) are ignored.

  An array of structures that represents the points to transform. 1.0.5000.0 2.0.0.0