Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Metode Matriks::TransformVectors mengalikan setiap vektor dalam array dengan matriks ini. Elemen terjemahan matriks ini (baris ketiga) diabaikan. Setiap vektor diperlakukan sebagai matriks baris. Perkalian dilakukan dengan matriks baris di sebelah kiri dan matriks ini di sebelah kanan.
Sintaks
Status TransformVectors(
[in, out] Point *pts,
[in] INT count
);
Parameter
[in, out] pts
Jenis: Titik*
Penunjuk ke array objek Titik yang, pada input, berisi vektor yang akan diubah dan, pada output, menerima vektor yang diubah. Setiap vektor dalam array diubah (dikalikan dengan matriks ini) dan diperbarui dengan hasil transformasi.
[in] count
Jenis: INT
Pilihan. Bilangan bulat yang menentukan jumlah vektor yang akan diubah. Nilai default adalah 1.
Nilai kembali
Jenis: Status
Jika metode berhasil, metode mengembalikan Ok, yang merupakan elemen dari enumerasi Status .
Jika metode gagal, metode mengembalikan salah satu elemen lain dari enumerasi Status .
Keterangan
Sementara titik mewakili posisi, vektor mewakili entitas (misalnya, kecepatan atau akselerasi) yang memiliki arah dan besaran. Dengan demikian, titik akhir segmen garis adalah titik, tetapi perbedaannya adalah vektor—panjang dan arah segmen garis tersebut.
Vektor mirip dengan titik dalam banyak hal. Seperti poin, mereka diwakili oleh koordinat x- dan y, sehingga GDI + menggunakan kelas yang sama (Titik dan PointF) untuk mewakili vektor seperti yang digunakan untuk mewakili titik. Perbedaan halus antara vektor dan titik adalah cara mereka dipengaruhi oleh transformasi. Di dunia fisik, memindahkan asal sistem koordinat mengubah koordinat semua titik posisi, tetapi tidak akan mengubah vektor kecepatan apa pun. Vektor dapat diskalakan, diputar, dipotong atau dibalik, tetapi tidak diterjemahkan (dipindahkan). Dengan demikian, ketika transformasi affine diterapkan ke vektor, komponen terjemahan (baris terakhir matriks) diabaikan.
Contoh
Contoh berikut membuat vektor dan titik. Ujung vektor dan titik berada di lokasi yang sama: (100, 50). Kode membuat objek Matriks dan menginisialisasi elemennya sehingga mewakili rotasi searah jarang diikuti dengan terjemahan 100 unit di sebelah kanan. Kode memanggil metode Matrix::TransformPoints dari matriks untuk mengubah titik dan memanggil metode Matrix::TransformVectors dari matriks untuk mengubah vektor. Seluruh transformasi (rotasi diikuti dengan terjemahan) dilakukan pada titik, tetapi hanya bagian rotasi dari transformasi yang dilakukan pada vektor. Elemen matriks yang mewakili terjemahan diabaikan oleh metode Matrix::TransformVectors .
VOID Example_TransVectors(HDC hdc)
{
Graphics graphics(hdc);
Pen pen(Color(255, 0, 0, 255), 7);
pen.SetEndCap(LineCapArrowAnchor);
SolidBrush brush(Color(255, 0, 0, 255));
// A point and a vector, same representation but different behavior
Point point(100, 50);
Point vector(100, 50);
// Draw the original point and vector in blue.
graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);
graphics.DrawLine(&pen, Point(0, 0), vector);
// Transform.
Matrix matrix(0.8f, 0.6f, -0.6f, 0.8f, 100.0f, 0.0f);
matrix.TransformPoints(&point);
matrix.TransformVectors(&vector);
// Draw the transformed point and vector in red.
pen.SetColor(Color(255, 255, 0, 0));
brush.SetColor(Color(255, 255, 0, 0));
graphics.FillEllipse(&brush, point.X - 5, point.Y - 5, 10, 10);
graphics.DrawLine(&pen, Point(0, 0), vector);
}
Persyaratan
Klien minimum yang didukung | Windows XP, Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | gdiplusmatrix.h (termasuk Gdiplus.h) |
Pustaka | Gdiplus.lib |
DLL | Gdiplus.dll |