Share via


Matrix 結構

定義

代表用於二維空間中轉換的 3 × 3 個相依轉換矩陣。

public value class Matrix
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct Matrix
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 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
屬性

範例

此範例 XAML 會定義 Matrix,以提供套用至矩形圖形 之 MatrixTransform 的數據。 在此情況下,矩陣會結合位移 (OffsetX 和 OffsetY,以及扭曲 (M12。 請注意,這個相同的效果可能是藉由結合 TranslateTransformSkewTransform 來產生。 是否要使用單一矩陣或離散轉換的組合,都是程式代碼撰寫樣式的問題;結果完全相同。

<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

最後一列 OffsetXOffsetY 中的成員代表翻譯值。

在方法和屬性中,轉換矩陣通常會指定為只有六個成員的向量,如下所示: (M11、M12M21、M22OffsetXOffsetY)

雖然您可以使用 Matrix 結構直接轉譯個別點,或使用 MatrixTransform 轉換物件,但 Windows 執行階段 也提供一組類別,可轉換物件,而不需直接使用矩陣:

矩陣的屬性可以動畫 (為一或多個 DoubleAnimation 動畫或 DoubleAnimationUsingKeyFrames) 。

Matrix 是 MatrixTransform.Matrix 屬性的屬性值。 相關類型可用於三維空間中的轉換矩陣,然後用於投影。 請參閱 Matrix3DMatrix3DProjection

矩陣的語言投影和成員

如果您使用 Microsoft .NET 語言 (C# 或 Microsoft Visual Basic) ,或在 Visual C++ 元件延伸模組中 (C++/CX) 則 Matrix 具有非數據成員可用,而且其數據成員會公開為讀寫屬性,而非字段。

如果您使用 Windows 執行階段 範本連結庫 (WRL) 進行 C++ 程式設計,則只有數據成員字段會以 Matrix 的成員的形式存在,而且您無法使用成員數據表中列出的公用程式方法或屬性。 WRL 程式代碼可以存取 MatrixHelper 類別上存在的類似公用程式方法。

欄位

M11

這個矩陣結構的第一列和第一欄的值。

M12

這個 Matrix 結構的第一列和第二欄的值。

M21

這個 Matrix 結構的第二列和第一欄的值。

M22

這個 Matrix 結構的第二列和第二欄的值。

OffsetX

取得或設定這個 Matrix 結構的第三列和第一個數據行的值。

OffsetY

取得或設定這個 Matrix 結構之第三列和第二欄的值。

適用於