Condividi tramite


Metodo PathGradientBrush::MultipliTransform (gdipluspath.h)

Il metodo PathGradientBrush::MultipliTransform 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*

Puntatore alla matrice che verrà moltiplicata in base alla matrice di trasformazione corrente del pennello.

[in] order

Tipo: MatrixOrder

facoltativo. 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, ovvero 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 matrice singola 3 ×3 che rappresenta l'intera sequenza di trasformazioni. La trasformazione rappresentata da tale prodotto è denominata trasformazione composita. Si supponga, ad esempio, che la matrice R rappresenti una rotazione e una matrice T rappresenta una traduzione. Se matrice M è il prodotto RT, la matrice M rappresenta una trasformazione composita: prima ruotare, quindi tradurre.

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

Esempio

Nell'esempio seguente viene creato un oggetto PathGradientBrush basato su un percorso triangolare. Il codice chiama il metodo PathGradientBrush::ScaleTransform dell'oggetto PathGradientBrush per riempire la matrice di trasformazione del pennello con gli elementi che rappresentano una scalabilità orizzontale per un fattore 3. Il codice chiama quindi il metodo PathGradientBrush::MultipliTransform dello stesso oggetto PathGradientBrush per moltiplicare la matrice di trasformazione esistente del pennello in base a una matrice che rappresenta una traduzione (10 destra, 30 giù). L'argomento MatrixOrderAppend indica che la moltiplicazione viene eseguita con la matrice di conversione a destra.

Dopo la moltiplicazione, la matrice di trasformazione del pennello rappresenta una trasformazione composita: prima scala, quindi tradurre. Tale trasformazione composita viene applicata al percorso limite del pennello durante la chiamata a FillRectangle, quindi è l'area all'interno del percorso trasformato che viene dipinto.

VOID Example_MultiplyTransform(HDC hdc)
{
   Graphics graphics(hdc);
   Point pts[] = {Point(0, 0), Point(50, 0), Point(50, 50)};

   // Translate 10 right, 30 down.
   Matrix matrix(1.0f, 0.0f, 0.0f, 1.0f, 10.0f, 30.0f);

   PathGradientBrush pthGrBrush(pts, 3);
   pthGrBrush.ScaleTransform(3.0f, 1.0f);
   pthGrBrush.MultiplyTransform(&matrix, MatrixOrderAppend);

   graphics.FillRectangle(&pthGrBrush, 0, 0, 200, 200);  
}

Requisiti

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 Windows
Intestazione gdipluspath.h (include Gdiplus.h)
Libreria Gdiplus.lib
DLL Gdiplus.dll

Vedi anche

Pennelli e forme piene

Creazione di una sfumatura di percorso

Riempimento di una forma con sfumatura di colore

Matrice

Rappresentazione tramite matrici delle trasformazioni

Matrixorder

PathGradientBrush

PathGradientBrush::GetTransform

PathGradientBrush::ResetTransform

PathGradientBrush::RotateTransform

PathGradientBrush::ScaleTransform

PathGradientBrush::SetTransform

PathGradientBrush::TranslateTransform

Trasformazioni