Matrix Matrix Matrix Matrix Class

Определение

Инкапсулирует аффинное представление с матричным преобразованием 3 на 3, представляющим геометрическое преобразование.Encapsulates a 3-by-3 affine matrix that represents a geometric transform. Этот класс не наследуется.This class cannot be inherited.

public ref class Matrix sealed : MarshalByRefObject, IDisposable
public sealed class Matrix : MarshalByRefObject, IDisposable
type Matrix = class
    inherit MarshalByRefObject
    interface IDisposable
Public NotInheritable Class Matrix
Inherits MarshalByRefObject
Implements IDisposable
Наследование
Реализации

Комментарии

В GDI+GDI+ можно хранить аффинные преобразования в Matrix объекта.In GDI+GDI+ you can store an affine transformation in a Matrix object. Так как третий столбец матрицы, задающей аффинное преобразование всегда является (0, 0, 1), укажите только шесть чисел в первых двух столбцах при создании Matrix объекта.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 Matrix object. Инструкция Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) создает матрицу, изображенную на рисунке ниже.The statement Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) constructs the matrix shown in the following figure.

ПреобразованияTransformations

Составные преобразованияComposite Transformations

Составное преобразование — это последовательность преобразований, один за другим.A composite transformation is a sequence of transformations, one followed by the other. Рассмотрим матрицы и преобразования в следующем списке:Consider the matrices and transformations in the following list:

Матрицы AMatrix A Повернуть на 90 градусовRotate 90 degrees
Матрица BMatrix B Масштабирование с коэффициентом 2 по оси xScale by a factor of 2 in the x direction
Матрица CMatrix C Сдвиг на три единицы по оси yTranslate 3 units in the y direction

Если мы начинаться с точки (2, 1) -, представленной в матрице [2 1 1 -], умножьте, B, затем выберите C, точка (2, 1) подвергнется три преобразования в указанном порядке.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.

[1 1, 2] ABC = [1 ПО 5-2][2 1 1]ABC = [-2 5 1]

А не хранить три части составного преобразования в три отдельных матрицы, можно умножить A, B и C вместе для получения в единую матрицу 3 × 3, в которой хранятся все составное преобразование.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. Предположим, что ABC = D. Затем точка, умноженная D дает тот же результат, как точка, умноженное на A, B и C.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][2 1 1]D = [-2 5 1]

На следующем рисунке показан матрицы A, B, C и D.The following illustration shows the matrices A, B, C, and D.

ПреобразованияTransformations

Тот факт, что матрица составного преобразования может быть создана путем перемножения матриц отдельных преобразования означает, что любая последовательность аффинных преобразований могут храниться в одном Matrix объекта.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 Matrix 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. В общем случае ABC не равно BAC.In general, ABC is not the same as BAC.

Matrix Класс предоставляет несколько методов для составных преобразований: Multiply, Rotate, RotateAt, Scale, Shear, и Translate.The Matrix class provides several methods for building a composite transformation: Multiply, Rotate, RotateAt, Scale, Shear, and Translate. В следующем примере создается матрица составного преобразования, сначала поворачивается на 30 градусов, а затем масштабируется с коэффициентом 2 по оси y и транслирует 5 единиц по оси x: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:

Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)

Конструкторы

Matrix() Matrix() Matrix() Matrix()

Инициализирует новый экземпляр класса Matrix в виде единичной матрицы.Initializes a new instance of the Matrix class as the identity matrix.

Matrix(Rectangle, Point[]) Matrix(Rectangle, Point[]) Matrix(Rectangle, Point[]) Matrix(Rectangle, Point[])

Инициализирует новый экземпляр класса Matrix для геометрического преобразования, определяемого указанным прямоугольником и массивом точек.Initializes a new instance of the Matrix class to the geometric transform defined by the specified rectangle and array of points.

Matrix(RectangleF, PointF[]) Matrix(RectangleF, PointF[]) Matrix(RectangleF, PointF[]) Matrix(RectangleF, PointF[])

Инициализирует новый экземпляр класса Matrix для геометрического преобразования, определяемого указанным прямоугольником и массивом точек.Initializes a new instance of the Matrix class to the geometric transform defined by the specified rectangle and array of points.

Matrix(Single, Single, Single, Single, Single, Single) Matrix(Single, Single, Single, Single, Single, Single) Matrix(Single, Single, Single, Single, Single, Single) Matrix(Single, Single, Single, Single, Single, Single)

Инициализирует новый экземпляр класса Matrix с указанными элементами.Initializes a new instance of the Matrix class with the specified elements.

Свойства

Elements Elements Elements Elements

Получает массив значений с плавающей запятой, представляющий элементы этого объекта Matrix.Gets an array of floating-point values that represents the elements of this Matrix.

IsIdentity IsIdentity IsIdentity IsIdentity

Получает значение, определяющее, является ли объект Matrix единичной матрицей.Gets a value indicating whether this Matrix is the identity matrix.

IsInvertible IsInvertible IsInvertible IsInvertible

Возвращает значение, указывающее, является ли матрица Matrix обратимой.Gets a value indicating whether this Matrix is invertible.

OffsetX OffsetX OffsetX OffsetX

Получает значение смещения по оси x (значение dx, или элемент на пересечении третьей строки и первого столбца) объекта Matrix.Gets the x translation value (the dx value, or the element in the third row and first column) of this Matrix.

OffsetY OffsetY OffsetY OffsetY

Получает значение смещения по оси y (значение dy, или элемент на пересечении третьей строки и второго столбца) для этого объекта Matrix.Gets the y translation value (the dy value, or the element in the third row and second column) of this Matrix.

Методы

Clone() Clone() Clone() Clone()

Создает точную копию данного объекта Matrix.Creates an exact copy of this Matrix.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Освобождает все ресурсы, используемые этим объектом Matrix.Releases all resources used by this Matrix.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Проверяет, является ли заданный объект объектом Matrix и идентичен ли он этому объекту Matrix.Tests whether the specified object is a Matrix and is identical to this Matrix.

Finalize() Finalize() Finalize() Finalize()

Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как он будет уничтожен во время сборки мусора.Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код.Returns a hash code.

GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
Invert() Invert() Invert() Invert()

Обращает матрицу Matrix, если она обратима.Inverts this Matrix, if it is invertible.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
Multiply(Matrix) Multiply(Matrix) Multiply(Matrix) Multiply(Matrix)

Умножает эту матрицу Matrix на матрицу, указанную в параметре matrix, путем добавления указанной матрицы Matrix.Multiplies this Matrix by the matrix specified in the matrix parameter, by prepending the specified Matrix.

Multiply(Matrix, MatrixOrder) Multiply(Matrix, MatrixOrder) Multiply(Matrix, MatrixOrder) Multiply(Matrix, MatrixOrder)

Умножает этот объект Matrix на матрицу, указанную в параметре matrix, в порядке, задаваемом в параметре order.Multiplies this Matrix by the matrix specified in the matrix parameter, and in the order specified in the order parameter.

Reset() Reset() Reset() Reset()

Сбрасывает этот объект Matrix, чтобы получить элементы единичной матрицы.Resets this Matrix to have the elements of the identity matrix.

Rotate(Single) Rotate(Single) Rotate(Single) Rotate(Single)

Добавляет в этот объект Matrix поворот по часовой стрелке вокруг начала координат на указанный угол.Prepend to this Matrix a clockwise rotation, around the origin and by the specified angle.

Rotate(Single, MatrixOrder) Rotate(Single, MatrixOrder) Rotate(Single, MatrixOrder) Rotate(Single, MatrixOrder)

Применяет поворот по часовой стрелке вокруг начала координат (нулевые координаты x и y) на величину, указанную в параметре angle, к этому объекту Matrix.Applies a clockwise rotation of an amount specified in the angle parameter, around the origin (zero x and y coordinates) for this Matrix.

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

Применяет поворот по часовой стрелке к этому объектуMatrix; поворот производится вокруг точки, указанной в параметре point, и путем добавления поворота в начало.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)

Применяет поворот по часовой стрелке вокруг указанной точки к объекту Matrix в указанном порядке.Applies a clockwise rotation about the specified point to this Matrix in the specified order.

Scale(Single, Single) Scale(Single, Single) Scale(Single, Single) Scale(Single, Single)

Применяет указанный вектор масштабирования к этому объекту Matrix, добавляя вектор масштабирования в начало.Applies the specified scale vector to this Matrix by prepending the scale vector.

Scale(Single, Single, MatrixOrder) Scale(Single, Single, MatrixOrder) Scale(Single, Single, MatrixOrder) Scale(Single, Single, MatrixOrder)

Применяет указанный вектор масштабирования (scaleX и scaleY) к этому объекту Matrix в указанном порядке.Applies the specified scale vector (scaleX and scaleY) to this Matrix using the specified order.

Shear(Single, Single) Shear(Single, Single) Shear(Single, Single) Shear(Single, Single)

Применяет указанный вектор сдвига к этому объекту Matrix, добавляя преобразование сдвига в начало.Applies the specified shear vector to this Matrix by prepending the shear transformation.

Shear(Single, Single, MatrixOrder) Shear(Single, Single, MatrixOrder) Shear(Single, Single, MatrixOrder) Shear(Single, Single, MatrixOrder)

Применяет указанный вектор сдвига к этому объекту Matrix в указанном порядке.Applies the specified shear vector to this Matrix in the specified order.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)
TransformPoints(PointF[]) TransformPoints(PointF[]) TransformPoints(PointF[]) TransformPoints(PointF[])

Применяет геометрическое преобразование, представляемое этим объектом Matrix, к указанному массиву точек.Applies the geometric transform represented by this Matrix to a specified array of points.

TransformPoints(Point[]) TransformPoints(Point[]) TransformPoints(Point[]) TransformPoints(Point[])

Применяет геометрическое преобразование, представляемое этим объектом Matrix, к указанному массиву точек.Applies the geometric transform represented by this Matrix to a specified array of points.

TransformVectors(PointF[]) TransformVectors(PointF[]) TransformVectors(PointF[]) TransformVectors(PointF[])

Умножает каждый вектор массива на матрицу.Multiplies each vector in an array by the matrix. Элементы смещения данной матрицы (третья строка) игнорируются.The translation elements of this matrix (third row) are ignored.

TransformVectors(Point[]) TransformVectors(Point[]) TransformVectors(Point[]) TransformVectors(Point[])

Применяет только компоненты масштабирования и поворота этого объекта Matrix к указанному массиву точек.Applies only the scale and rotate components of this Matrix to the specified array of points.

Translate(Single, Single) Translate(Single, Single) Translate(Single, Single) Translate(Single, Single)

Применяет указанный вектор смещения (offsetX и offsetY) к этому объекту Matrix, добавляя вектор смещения в начало.Applies the specified translation vector (offsetX and offsetY) to this Matrix by prepending the translation vector.

Translate(Single, Single, MatrixOrder) Translate(Single, Single, MatrixOrder) Translate(Single, Single, MatrixOrder) Translate(Single, Single, MatrixOrder)

Применяет указанный вектор ссмещения к этому объекту Matrix в указанном порядке.Applies the specified translation vector to this Matrix in the specified order.

VectorTransformPoints(Point[]) VectorTransformPoints(Point[]) VectorTransformPoints(Point[]) VectorTransformPoints(Point[])

Умножает каждый вектор массива на матрицу.Multiplies each vector in an array by the matrix. Элементы смещения данной матрицы (третья строка) игнорируются.The translation elements of this matrix (third row) are ignored.

Применяется к

Дополнительно