LinearGradientBrush::MultiplyTransform method (gdiplusbrush.h)

Metode LinearGradientBrush::MultiplyTransform memperbarui matriks transformasi kuas ini dengan produk itu sendiri dan matriks lain.

Sintaks

Status MultiplyTransform(
  [in] const Matrix *matrix,
  [in] MatrixOrder  order
);

Parameter

[in] matrix

Jenis: const Matrix*

Penunjuk ke matriks untuk dikalikan dengan matriks transformasi kuas saat ini.

[in] order

Jenis: MatrixOrder

Pilihan. Elemen enumerasi MatrixOrder yang menentukan urutan perkalian. MatrixOrderPrepend menentukan bahwa matriks yang diteruskan berada di sebelah kiri, dan MatrixOrderAppend menentukan bahwa matriks yang diteruskan berada di sebelah kanan. Nilai defaultnya adalah MatrixOrderPrepend.

Menampilkan nilai

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

Satu matriks 3 ×3 dapat menyimpan urutan transformasi affine apa pun. Jika Anda memiliki beberapa 3 matriks ×3, yang masing-masing mewakili transformasi afin, produk matriks tersebut adalah matriks 3 ×3 tunggal yang mewakili seluruh urutan transformasi. Transformasi yang diwakili oleh produk tersebut disebut transformasi komposit. Misalnya, misalkan matriks R mewakili rotasi, dan matriks T mewakili terjemahan. Jika matriks M adalah RT produk, maka matriks M mewakili transformasi komposit: putar terlebih dahulu, lalu terjemahkan.

Urutan perkalian matriks penting. Secara umum, matriks produk RT tidak sama dengan produk matriks TR. Dalam contoh yang diberikan dalam paragraf sebelumnya, transformasi komposit yang diwakili oleh RT (putar pertama, lalu terjemahkan) tidak sama dengan transformasi komposit yang diwakili oleh TR (terjemahkan terlebih dahulu, lalu putar).

Contoh

Contoh berikut membuat kuas gradien linier dan menggunakannya untuk mengisi persegi panjang. Selanjutnya, kode menetapkan matriks transformasi kuas, mengisi persegi panjang dengan kuas yang diubah, memodifikasi matriks transformasi kuas, dan sekali lagi mengisi persegi panjang dengan kuas yang diubah.

VOID Example_MultTrans(HDC hdc)
{
   Graphics myGraphics(hdc);

   Matrix S(2, 0, 0, 1, 0, 0);   // horizontal doubling
   Matrix T(1, 0, 0, 1, 50, 0);  // horizontal translation of 50 units

   LinearGradientBrush linGrBrush(
      Rect(0, 0, 200, 100),
      Color(255, 255, 0, 0),     // red
      Color(255, 0, 0, 255),     // blue
      LinearGradientModeHorizontal);

   // Fill a large area with the gradient brush (no transformation).
   myGraphics.FillRectangle(&linGrBrush, 0, 0, 800, 100);

   // Apply the scaling transformation.
   linGrBrush.SetTransform(&S);

   // Fill a large area with the scaled gradient brush.
   myGraphics.FillRectangle(&linGrBrush, 0, 150, 800, 100);

   // Form a composite transformation: first scale, then translate.
   linGrBrush.MultiplyTransform(&T, MatrixOrderAppend);

   // Fill a large area with the scaled and translated gradient brush.
   myGraphics.FillRectangle(&linGrBrush, 0, 300, 800, 100);
}

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 gdiplusbrush.h (termasuk Gdiplus.h)
Pustaka Gdiplus.lib
DLL Gdiplus.dll

Lihat juga

Kuas dan Bentuk Terisi

Mengisi Bentuk dengan Sikat Gradien

LinearGradientBrush

LinearGradientBrush::RotateTransform

LinearGradientBrush::ScaleTransform

LinearGradientBrush::TranslateTransform

Matrix

Representasi Transformasi Matriks

MatrixOrder

Rect

Transformasi