System.Drawing.Drawing2D.Matrix 類別

本文提供此 API 參考文件的補充備註。

類別 Matrix 會封裝代表幾何轉換的 3 by-3 仿射矩陣。

在 GDI+ 中,您可以將相依轉換儲存在 物件中 Matrix 。 因為代表相依轉換的矩陣的第三個數據行一律是 (0, 0, 1),因此當您建構 物件時,只會在前兩個數據行中指定六個 Matrix 數位。 語句 Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) 會建構下圖所示的矩陣。

矩陣。

注意

在 .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。

矩陣 A、B、C 和 D

復合轉換的矩陣可以乘以個別轉換矩陣來形成,這表示任何一連串的仿射轉換都可以儲存在單 Matrix 一物件中。

警告

複合轉換的順序很重要。 一般而言,旋轉,然後縮放,然後轉譯與縮放比例不同,然後旋轉,然後轉譯。 同樣地,矩陣乘法的順序也很重要。 一般而言,ABC 與 BAC 不同。

類別Matrix提供數種方法來建置複合轉換:Multiply、、RotateRotateAtScale、、 ShearTranslate。 下列範例會建立複合轉換的矩陣,該矩陣會先旋轉 30 度,然後以 Y 方向的 2 乘以 2 為比例縮放,然後轉譯 5 個單位的 x 方向:

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)