Matrix Класс

Определение

Инкапсулирует матрицу аффина 3-3, представляющую геометрическое преобразование. Этот класс не наследуется.

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
Наследование
Реализации

Комментарии

Класс Matrix инкапсулирует матрицу аффина 3-3, представляющую геометрическое преобразование.

В GDI+можно сохранить аффинное преобразование в объекте Matrix . Так как третий столбец матрицы, представляющий преобразование аффина, всегда равен (0, 0, 1), при создании объекта Matrix указывается только шесть чисел в первых двух столбцах. Оператор Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) создает матрицу, показанную на следующем рисунке.

Матрица.

Note

В .NET 6 и более поздних версиях пакет System.Drawing.Common, который включает этот тип, поддерживается только в операционных системах Windows. Использование этого типа в кроссплатформенных приложениях вызывает предупреждения во время компиляции и исключения во время выполнения. Дополнительные сведения см. в статье System.Drawing.Common, поддерживаемой только в Windows.

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

Составное преобразование — это последовательность преобразований, выполняемых одно за другим. Рассмотрим матрицы и преобразования в следующем списке:

Матрица Преобразование
Матрица A Поворот 90 градусов
Матрица B Масштабирование по коэффициенту 2 в направлении x
Матрица C Перевод 3 единиц в направлении y

Если начать с точки (2, 1) - представленную матрицой [2 1 1] - и умножить на A, то B, то C, точка (2, 1) будет проходить три преобразования в указанном порядке.

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

Вместо хранения трех частей составного преобразования в трех отдельных матрицах можно умножить A, B и C вместе, чтобы получить одну матрицу 3×3, которая сохраняет все составное преобразование. Предположим ABC = D. Затем точка, умноженная на D, дает тот же результат, что и точка, умноженная на A, а затем B, а затем C.

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

На следующем рисунке показаны матрицы A, B, C и D.

Матрицы A, B, C и D

Тот факт, что матрица составного преобразования может быть сформирована путем умножения отдельных матриц преобразования означает, что любая последовательность аффинных преобразований может храниться в одном объекте Matrix.

Caution

Порядок составного преобразования важен. Вообще, поворот, затем масштабирование и затем перемещение — это не то же самое, что масштабирование, затем поворот и перемещение. Аналогичным образом важно, чтобы порядок умножения матрицы был важен. Как правило, ABC не совпадает с BAC.

Класс Matrix предоставляет несколько методов создания составного преобразования: Multiply, Rotate, RotateAt, Scale, Shearи Translate. В следующем примере создается матрица составного преобразования, которая сначала поворачивает 30 градусов, а затем масштабируется на коэффициент 2 в направлении y, а затем преобразует 5 единиц в направлении x:

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(Matrix3x2)

Создает указанный Matrix объект matrix.

Matrix(Rectangle, Point[])

Инициализирует новый экземпляр Matrix класса в геометрическое преобразование, определенное заданным прямоугольником и массивом точек.

Matrix(RectangleF, PointF[])

Инициализирует новый экземпляр Matrix класса в геометрическое преобразование, определенное заданным прямоугольником и массивом точек.

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

Инициализирует новый экземпляр Matrix класса с указанными элементами.

Свойства

Имя Описание
Elements

Возвращает массив значений с плавающей запятой, представляющий элементы этого Matrixэлемента.

IsIdentity

Возвращает значение, указывающее, является ли это Matrix матрица удостоверений.

IsInvertible

Возвращает значение, указывающее, является ли это Matrix инвертируемым.

MatrixElements

Возвращает или задает элементы матрицы.

OffsetX

Возвращает значение преобразования x (значение dx или элемент в третьей строке и первом столбце) этого Matrixэлемента.

OffsetY

Возвращает значение перевода y (значение dy или элемент в третьей строке и втором столбце) этого Matrixэлемента.

Методы

Имя Описание
Clone()

Создает точную копию этого Matrixобъекта.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает все ресурсы, используемые этим Matrixпараметром.

Equals(Object)

Проверяет, является ли указанный Matrix объект идентичным этому Matrixобъекту.

Finalize()

Позволяет объекту пытаться освободить ресурсы и выполнять другие операции очистки перед его восстановлением сборкой мусора.

GetHashCode()

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

GetLifetimeService()
Устаревшие.

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие.

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
Invert()

Инвертирует это Matrix, если это неуверно.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
Multiply(Matrix, MatrixOrder)

Умножает это Matrix на матрицу, указанную в matrix параметре, и в порядке, указанном в параметре order .

Multiply(Matrix)

Умножает это Matrix на матрицу, указанную в параметреmatrix, путем подготовки указанного.Matrix

Reset()

Сбрасывает этот Matrix параметр, чтобы элементы матрицы удостоверений были сброшены.

Rotate(Single, MatrixOrder)

Применяет по часовой стрелке по часовой стрелке количество, указанное в angle параметре, вокруг источника (ноль координат x и y) для этого Matrix.

Rotate(Single)

Перед этим Matrix поворотом по часовой стрелке вокруг источника и заданным углом.

RotateAt(Single, PointF, MatrixOrder)

Применяет поворот по часовой стрелке относительно указанной точки в Matrix указанном порядке.

RotateAt(Single, PointF)

Применяет к этому Matrix поворот по часовой стрелке вокруг точки, указанной в параметре point , и путем подготовки поворота.

Scale(Single, Single, MatrixOrder)

Применяет указанный вектор масштабирования (scaleX и scaleY) к этому Matrix с помощью указанного порядка.

Scale(Single, Single)

Применяет указанный вектор масштабирования к этому Matrix путем при подготовке вектора масштабирования.

Shear(Single, Single, MatrixOrder)

Применяет к этому Matrix указанный вектор сдвига в указанном порядке.

Shear(Single, Single)

Применяет к этому Matrix указанный вектор стрижения путем подготовки преобразования шери.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TransformPoints(Point[])

Применяет геометрическое преобразование, представленное этим Matrix , к указанному массиву точек.

TransformPoints(PointF[])

Применяет геометрическое преобразование, представленное этим Matrix , к указанному массиву точек.

TransformPoints(ReadOnlySpan<Point>)

Применяет геометрическое преобразование, представленное этим Matrix , к указанному массиву точек.

TransformPoints(ReadOnlySpan<PointF>)

Применяет геометрическое преобразование, представленное этим Matrix , к указанному массиву точек.

TransformVectors(Point[])

Применяет только компоненты масштабирования и поворота к Matrix указанному массиву точек.

TransformVectors(PointF[])

Умножает каждый вектор в массиве на матрицу. Элементы перевода этой матрицы (третья строка) игнорируются.

TransformVectors(ReadOnlySpan<Point>)

Умножает каждый вектор в массиве на матрицу. Элементы перевода этой матрицы (третья строка) игнорируются.

TransformVectors(ReadOnlySpan<PointF>)

Умножает каждый вектор в массиве на матрицу. Элементы перевода этой матрицы (третья строка) игнорируются.

Translate(Single, Single, MatrixOrder)

Применяет указанный вектор перевода к этому Matrix в указанном порядке.

Translate(Single, Single)

Применяет указанный вектор перевода (offsetX и offsetY) к этому Matrix путем при подготовке вектора перевода.

VectorTransformPoints(Point[])

Умножает каждый вектор в массиве на матрицу. Элементы перевода этой матрицы (третья строка) игнорируются.

VectorTransformPoints(ReadOnlySpan<Point>)

Умножает каждый вектор в массиве на матрицу. Элементы перевода этой матрицы (третья строка) игнорируются.

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

См. также раздел