Matrix 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表用於二維空間中轉換的 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。 請注意,這個相同的效果可能是藉由結合 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)
雖然您可以使用 Matrix 結構直接轉譯個別點,或使用 MatrixTransform 轉換物件,但 Windows 執行階段 也提供一組類別,可轉換物件,而不需直接使用矩陣:
矩陣的屬性可以動畫 (為一或多個 DoubleAnimation 動畫或 DoubleAnimationUsingKeyFrames) 。
Matrix 是 MatrixTransform.Matrix 屬性的屬性值。 相關類型可用於三維空間中的轉換矩陣,然後用於投影。 請參閱 Matrix3D 和 Matrix3DProjection。
矩陣的語言投影和成員
如果您使用 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 結構之第三列和第二欄的值。 |