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 matrice*
Puntatore a una matrice da moltiplicare per la matrice di trasformazione corrente del pennello.
[in] order
Tipo: MatrixOrder
Opzionale. 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 si trova 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.
Osservazioni
Una singola matrice di 3 ×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 la matrice M è il prodotto RT, la matrice M rappresenta una trasformazione composita: prima ruota, quindi trasla.
L'ordine di moltiplicazione della matrice è importante. In generale, il prodotto matrice RT non è uguale al 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).
Esempi
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 di nuovo 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);
}
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP, Windows 2000 Professional [solo app desktop] |
server minimo supportato | Windows 2000 Server [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione | gdiplusbrush.h (include Gdiplus.h) |
libreria | Gdiplus.lib |
dll | Gdiplus.dll |
Vedere anche
riempimento di forme con un pennello sfumato
LinearGradientBrush::RotateTransform
LinearGradientBrush::ScaleTransform
LinearGradientBrush::TranslateTransform
rappresentazione matrice delle trasformazioni