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), поэтому необходимо указать только члены в первых двух столбцах. Обратите внимание, что векторы выражаются в виде векторов строк, а не столбцов.
Матрица хранится в порядке основных строк и имеет следующую структуру:
M11 | M12 | 0 |
M21 | M22 | 0 |
OffsetX | OffsetY | 1 |
Элементы в последней строке 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 |
Возвращает или задает значение третьей строки и второго столбца этой структуры Матрицы. |