Matrix 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
封裝代表幾何轉換的 3 by-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
- 繼承
- 實作
備註
類別Matrix封裝了一個 3x3 仿射矩陣,該矩陣代表幾何轉換。
在 GDI+ 中,您可以將相依轉換儲存在 物件中 Matrix 。 由於代表仿射轉換的矩陣第三欄一律是 (0, 0, 1),因此,當您建構 Matrix (英文) 物件時,只需在前兩欄中指定六個數字。 語句 Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) 會建構下圖所示的矩陣。
Note
在 .NET 6 和更新版本中,只有 Windows作系統才支援包含此類型的 System.Drawing.Common 套件。 跨平台應用程式使用此類會引發編譯時警告及執行時異常。 如需詳細資訊,請參閱 僅限 Windows 上支援的 System.Drawing.Common。
複合轉換
復合轉換指的是一系列連續的轉換操作,一個接著一個依次進行。 請考慮下列清單中的矩陣和轉換:
| 矩陣 | 轉型 |
|---|---|
| 矩陣 A | 旋轉 90 度 |
| 矩陣 B | 沿 x 方向放大至 2 倍 |
| 矩陣 C | 沿 y 方向平移 3 個單位 |
如果您從點 (2, 1) 開始 -- 以矩陣 [2 1 1] 表示,並以 A 乘以 B,然後 C,點 (2, 1) 會依照列出的順序進行三個轉換。
[2 1 1]ABC = [-2 5 1]
除了將複合轉換的三個部分儲存在三個不同的矩陣中,您還可以將 A、B 和 C 相乘,以取得儲存這整個複合轉換的單一 3×3 矩陣。 假設 ABC = D。 然後,乘以 D 的點會產生與 A 乘以 A、B、C 相同的結果。
[2 1 1]D = [-2 5 1]
下圖顯示矩陣 A、B、C 和 D。
複合轉換的矩陣可以透過與個別轉換矩陣相乘來形成,這表示任何仿射轉換序列都可儲存在單一 Matrix (英文) 物件中。
注意事項
複合轉換的順序很重要。 一般而言,旋轉、縮放、再轉譯與縮放、旋轉、再轉譯並不相同。 同樣地,矩陣乘法的順序也很重要。 一般而言,ABC 與 BAC 不同。
Matrix 類別提供數種方法來構建複合轉換:Multiply、Rotate、RotateAt、Scale、Shear 和 Translate。 下列範例會建立複合轉換的矩陣,其會先旋轉 30 度,然後沿 y 方向縮放 2 倍,接著沿 x 方向平移 5 個單位:
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)
建構函式
| 名稱 | Description |
|---|---|
| Matrix() |
初始化該類別的新實例 Matrix 作為單位矩陣。 |
| Matrix(Matrix3x2) |
利用指定的 Matrix建構 a |
| Matrix(Rectangle, Point[]) |
將類別的新實例 Matrix 初始化為由指定矩形與點陣列定義的幾何變換。 |
| Matrix(RectangleF, PointF[]) |
將類別的新實例 Matrix 初始化為由指定矩形與點陣列定義的幾何變換。 |
| Matrix(Single, Single, Single, Single, Single, Single) |
初始化一個包含指定元素的 Matrix 類別實例。 |
屬性
| 名稱 | Description |
|---|---|
| Elements |
得到一個浮點數陣列,代表該 Matrix元素。 |
| IsIdentity |
會得到一個值,表示該 Matrix 矩陣是否為單位矩陣。 |
| IsInvertible |
會得到一個值,表示此值 Matrix 是否可逆。 |
| MatrixElements |
取得或設定矩陣的元素。 |
| OffsetX |
取得此 Matrix的 x 平移值(dx 值,或第三列第一欄的元素)。 |
| OffsetY |
取得此 Matrix的 y 平移值(dy 值,或第三列第二欄的元素)。 |