Поделиться через


Matrix Структура

Определение

Представляет матрицу аффинного преобразования 3 × 3, используемую для преобразований в двумерном пространстве.

public value class Matrix
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct Matrix
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Matrix
Public Structure Matrix
<Matrix .../>
- or -
<object property="m11,m12,m21,m22,offsetX,offsetY"/>
- or -
<object property="m11 m12 m21 m22 offsetX offsetY"/>
-or-
<object property="Identity"/>
Наследование
Matrix
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

В этом примере XAML определяется матрица, которая предоставляет данные для MatrixTransform , примененные к прямоугольной фигуре. В этом случае матрица объединяет смещение (OffsetX и OffsetY) и неравномерное распределение (M12). Обратите внимание, что этот же эффект мог быть получен путем объединения TranslateTransform и SkewTransform. Использование одной матрицы или сочетаний дискретных преобразований зависит от стиля программирования; Результаты идентичны.

<Rectangle Width="100" Height="100" Fill="Red">
    <Rectangle.RenderTransform>
        <MatrixTransform Matrix="1,0,0,1,200,0">
        </MatrixTransform>
    </Rectangle.RenderTransform>
</Rectangle>

Комментарии

Матрица 3×3 используется для преобразований в двумерной плоскости x-y. Матрицы аффинных преобразований можно умножать в целях формирования любого количества таких линейных преобразований, как поворот и наклон (сдвиг), вслед за которыми выполняется перенос. Последний столбец матрицы аффинного преобразования равен (0, 0, 1), поэтому необходимо указать только члены в первых двух столбцах. Обратите внимание, что векторы выражаются в виде векторов строк, а не столбцов.

Матрица хранится в порядке основных строк и имеет следующую структуру:

M11M120
M21M220
OffsetXOffsetY1

Элементы в последней строке OffsetX и OffsetY представляют значения перевода.

В методах и свойствах матрица преобразования обычно указывается как вектор только с шестью элементами следующим образом: (M11, M12, M21, M22, OffsetX, OffsetY).

Хотя вы можете использовать структуру Матрицы напрямую для преобразования отдельных точек или MatrixTransform для преобразования объектов, среда выполнения Windows также предоставляет набор классов, которые могут преобразовывать объекты без непосредственной работы с матрицами:

Свойства матрицы можно анимировать (в виде одной или нескольких анимаций DoubleAnimationUsingKeyFrames).

Matrix — это значение свойства MatrixTransform.Matrix . Связанные типы можно использовать для матриц преобразования в трехмерном пространстве, а затем для проекции. См . статьи Matrix3D и Matrix3DProjection.

Языковые проекции и элементы Матрицы

Если вы используете язык Microsoft .NET (C# или Microsoft Visual Basic) или расширения компонентов Visual C++ (C++/CX), матрица имеет доступные члены, не относящиеся к данным, и члены данных предоставляются как свойства чтения и записи, а не поля.

Если вы выполняете программирование на C++ с помощью библиотеки шаблонов среда выполнения Windows (WRL), в качестве элементов Matrix существуют только поля элементов данных, и вы не сможете использовать служебные методы или свойства, перечисленные в таблице элементов. Код WRL может обращаться к аналогичным служебным методам, существующим в классе MatrixHelper .

Поля

M11

Значение первой строки и первого столбца этой структуры Матрица.

M12

Значение первой строки и второго столбца этой структуры Матрица.

M21

Значение второй строки и первого столбца этой структуры Матрица.

M22

Значение второй строки и второго столбца этой структуры Матрицы.

OffsetX

Возвращает или задает значение третьей строки и первого столбца этой структуры Матрицы.

OffsetY

Возвращает или задает значение третьей строки и второго столбца этой структуры Матрицы.

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