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

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

Внимание!

Порядок составного преобразования важен. Как правило, поворот, масштабирование, преобразование не не отличается от масштабирования, затем поворота и преобразования. Аналогично, важен порядок умножения матриц. Как правило, ABC не совпадает с БПЗ.

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)

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

Multiply(Matrix, MatrixOrder)

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

Reset()

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

Rotate(Single)

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

Rotate(Single, MatrixOrder)

Применяет поворот по часовой стрелке вокруг начала координат (нулевые координаты X и Y) на величину, указанную в параметре angle, к этому объекту Matrix.

RotateAt(Single, PointF)

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

RotateAt(Single, PointF, MatrixOrder)

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

Scale(Single, Single)

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

Scale(Single, Single, MatrixOrder)

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

Shear(Single, Single)

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

Shear(Single, Single, MatrixOrder)

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

ToString()

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

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

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

TransformPoints(PointF[])

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

TransformVectors(Point[])

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

TransformVectors(PointF[])

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

Translate(Single, Single)

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

Translate(Single, Single, MatrixOrder)

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

VectorTransformPoints(Point[])

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

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

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