Condividi tramite


Metodo LinearGradientBrush::MultiplyTransform (gdiplusbrush.h)

Il metodo LinearGradientBrush::MultiplyTransform aggiorna la matrice di trasformazione del pennello con il prodotto stesso e un'altra matrice.

Sintassi

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

Parametri

[in] matrix

Tipo: matrice const *

Puntatore a una matrice da moltiplicare per la matrice di trasformazione corrente del pennello.

[in] order

Tipo: MatrixOrder

Facoltativa. Elemento dell'enumerazione MatrixOrder che specifica l'ordine della moltiplicazione. MatrixOrderPrepend specifica che la matrice passata si trova a sinistra e MatrixOrderAppend specifica che la matrice passata è a destra. Il valore predefinito è MatrixOrderPrepend.

Valore restituito

Tipo: Stato

Se il metodo ha esito positivo, restituisce Ok, che è un elemento dell'enumerazione Status .

Se il metodo ha esito negativo, restituisce uno degli altri elementi dell'enumerazione Status .

Commenti

Una singola matrice di ×3 può archiviare qualsiasi sequenza di trasformazioni affine. Se sono presenti più di 3 matrici ×3, ognuna delle quali rappresenta una trasformazione affine, il prodotto di tali matrici è una singola matrice 3 ×3 che rappresenta l'intera sequenza di trasformazioni. La trasformazione rappresentata da tale prodotto è detta trasformazione composita. Si supponga, ad esempio, che la matrice R rappresenti una rotazione e che la matrice T rappresenti una traslazione. Se matrice M è il prodotto RT, la matrice M rappresenta una trasformazione composita: prima ruota, quindi traduci.

L'ordine della moltiplicazione della matrice è importante. In generale, il prodotto matrice RT non è lo stesso del prodotto matrice TR. Nell'esempio specificato nel paragrafo precedente, la trasformazione composita rappresentata da RT (prima ruota, quindi traduci) non è uguale alla trasformazione composita rappresentata da TR (prima traduci, quindi ruota).

Esempio

L'esempio seguente crea un pennello sfumato lineare e lo usa per riempire un rettangolo. Il codice imposta quindi la matrice di trasformazione del pennello, riempie un rettangolo con il pennello trasformato, modifica la matrice di trasformazione del pennello e riempie nuovamente un rettangolo con il pennello trasformato.

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);
}

Requisiti

   
Client minimo supportato Windows XP, Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione gdiplusbrush.h (include Gdiplus.h)
Libreria Gdiplus.lib
DLL Gdiplus.dll

Vedi anche

Pennelli e forme piene

Riempimento di forme con pennello sfumato

LinearGradientBrush

LinearGradientBrush::RotateTransform

LinearGradientBrush::ScaleTransform

LinearGradientBrush::TranslateTransform

Matrice

Rappresentazione tramite matrici delle trasformazioni

Matrixorder

Rect

Trasformazioni