Bagikan melalui


Kelas System.Drawing.Drawing2D.Matrix

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Kelas ini Matrix merangkum matriks affine 3-by-3 yang mewakili transformasi geometris.

Di GDI+, Anda dapat menyimpan transformasi affine dalam Matrix objek. Karena kolom ketiga matriks yang mewakili transformasi affine selalu (0, 0, 1), Anda hanya menentukan enam angka dalam dua kolom pertama saat Anda membuat Matrix objek. Pernyataan Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) ini membangun matriks yang ditunjukkan pada gambar berikut.

Matriks.

Catatan

Dalam .NET 6 dan versi yang lebih baru, paket System.Drawing.Common, yang mencakup jenis ini, hanya didukung pada sistem operasi Windows. Penggunaan jenis ini dalam aplikasi lintas platform menyebabkan peringatan waktu kompilasi dan pengecualian run-time. Untuk informasi selengkapnya, lihat System.Drawing.Common hanya didukung di Windows.

Transformasi komposit

Transformasi komposit adalah urutan transformasi, satu diikuti oleh yang lain. Pertimbangkan matriks dan transformasi dalam daftar berikut:

Matrix Transformasi
Matriks A Putar 90 derajat
Matriks B Menskalakan berdasarkan faktor 2 ke arah x
Matriks C Terjemahkan 3 unit ke arah y

Jika Anda mulai dengan titik (2, 1) - diwakili oleh matriks [2 1 1] - dan dikalikan dengan A, maka B, maka C, titik (2, 1) akan menjalani tiga transformasi dalam urutan yang tercantum.

[2 1 1]ABC = [-2 5 1]

Daripada menyimpan tiga bagian transformasi komposit dalam tiga matriks terpisah, Anda dapat mengalikan A, B, dan C bersama-sama untuk mendapatkan satu matriks 3×3 yang menyimpan seluruh transformasi komposit. Misalkan ABC = D. Kemudian titik yang dikalikan dengan D memberikan hasil yang sama dengan titik yang dikalikan dengan A, lalu B, lalu C.

[2 1 1]D = [-2 5 1]

Ilustrasi berikut menunjukkan matriks A, B, C, dan D.

Matriks A, B, C, dan D

Fakta bahwa matriks transformasi komposit dapat dibentuk dengan mengalikan matriks transformasi individu berarti bahwa urutan transformasi affine dapat disimpan dalam satu Matrix objek.

Perhatian

Urutan transformasi komposit penting. Secara umum, putar, lalu skalakan, lalu terjemahkan tidak sama dengan skala, lalu putar, lalu terjemahkan. Demikian pula, urutan perkalian matriks penting. Secara umum, ABC tidak sama dengan BAC.

Kelas ini Matrix menyediakan beberapa metode untuk membangun transformasi komposit: Multiply, , Rotate, RotateAt, ScaleShear, dan Translate. Contoh berikut membuat matriks transformasi komposit yang pertama kali memutar 30 derajat, lalu menskalakan dengan faktor 2 ke arah y, lalu menerjemahkan 5 unit ke arah 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)