Condividi tramite


Metodo PathGradientBrush::GetInterpolationColors (gdipluspath.h)

Il metodo PathGradientBrush::GetInterpolationColors ottiene i colori predefiniti e le posizioni di fusione attualmente specificate per questo pennello sfumato del percorso.

Sintassi

Status GetInterpolationColors(
  [out] Color *presetColors,
  [out] REAL  *blendPositions,
  [in]  INT   count
);

Parametri

[out] presetColors

Tipo: Colore*

Puntatore a una matrice che riceve i colori predefiniti. Un colore di un determinato indice nella matrice presetColors corrisponde alla posizione di fusione dello stesso indice nella matrice blendPositions .

[out] blendPositions

Tipo: REAL*

Puntatore a una matrice che riceve le posizioni di fusione. Ogni posizione di fusione è un numero compreso tra 0 e 1, dove 0 indica il limite della sfumatura e 1 indica il punto centrale. Una posizione di fusione compresa tra 0 e 1 indica il set di tutti i punti che sono una determinata frazione della distanza dal limite al punto centrale. Ad esempio, una posizione di fusione pari a 0,7 indica il set di tutti i punti che sono il 70% della strada dal limite al punto centrale.

[in] count

Tipo: INT

Integer che specifica il numero di elementi nella matrice presetColors . Corrisponde al numero di elementi nella matrice blendPositions .

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

Un pennello sfumatura di percorso semplice ha due colori: un colore limite e un colore centrale. Quando si disegna con un pennello di questo tipo, il colore cambia gradualmente dal colore limite al colore centrale mentre si passa dal percorso limite al punto centrale. È possibile creare una sfumatura più complessa specificando una matrice di colori predefiniti e una matrice di posizioni di fusione.

Prima di chiamare il metodo PathGradientBrush::GetInterpolationColors , è necessario allocare due buffer: uno per contenere la matrice di colori predefiniti e uno per contenere la matrice di posizioni di fusione. È possibile chiamare il metodo PathGradientBrush::GetInterpolationColorCount dell'oggetto PathGradientBrush per determinare le dimensioni necessarie di tali buffer. La dimensione del buffer dei colori è il valore restituito di PathGradientBrush::GetInterpolationColorCount moltiplicato per sizeof(Color). Le dimensioni del buffer di posizione sono il valore di PathGradientBrush::GetInterpolationColorCount moltiplicato per sizeof( REAL).

Esempio

Nell'esempio seguente viene creato un oggetto PathGradientBrush da un percorso triangolare. Il codice imposta i colori predefiniti su rosso, blu e aqua e imposta le posizioni di fusione su 0, 0,6 e 1. Il codice chiama il metodo PathGradientBrush::GetInterpolationColorCount dell'oggetto PathGradientBrush per ottenere il numero di colori predefiniti attualmente impostati per il pennello. Il codice alloca quindi due buffer: uno per contenere la matrice di colori predefiniti e uno per contenere la matrice di posizioni di fusione. La chiamata al metodo PathGradientBrush::GetInterpolationColors dell'oggetto PathGradientBrush riempie i buffer con i colori predefiniti e le posizioni di fusione. Infine, il codice riempie un piccolo quadrato con ognuno dei colori predefiniti.

VOID Example_GetInterpColors(HDC hdc)
{
   Graphics graphics(hdc);

   // Create a path gradient brush from an array of points, and
   // set the interpolation colors for that brush.

   Point points[] = {Point(100, 0), Point(200, 200), Point(0, 200)};
   PathGradientBrush pthGrBrush(points, 3);

   Color col[] = {
      Color(255, 255, 0, 0),     // red
      Color(255, 0, 0, 255),     // blue
      Color(255, 0, 255, 255)};  // aqua

   REAL pos[] = {
      0.0f,    // red at the boundary
      0.6f,    // blue 60 percent of the way from the boundary to the center
      1.0f};   // aqua at the center

   pthGrBrush.SetInterpolationColors(col, pos, 3);

   // Obtain information about the path gradient brush.
   INT colorCount = pthGrBrush.GetInterpolationColorCount();
   Color* colors = new Color[colorCount];
   REAL* positions = new REAL[colorCount];
   pthGrBrush.GetInterpolationColors(colors, positions, colorCount);

   // Fill a small square with each of the interpolation colors.
   SolidBrush solidBrush(Color(255, 255, 255, 255));

   for(INT j = 0; j < colorCount; ++j)
   {
      solidBrush.SetColor(colors[j]);
      graphics.FillRectangle(&solidBrush, 15*j, 0, 10, 10);
   }

   delete [] colors;
   delete [] positions; 
}

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

Colore

Creazione di una sfumatura di percorso

Riempimento di una forma con sfumatura di colore

PathGradientBrush

PathGradientBrush::GetInterpolationColorCount

PathGradientBrush::SetInterpolationColors