共用方式為


System.Drawing.Drawing2D.Matrix 類別

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

類別Matrix封裝了一個 3x3 仿射矩陣,該矩陣代表幾何轉換。

在 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 (部分機器翻譯)、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)