Condividi tramite


Metodo LinearGradientBrush::GetInterpolationColorCount (gdiplusbrush.h)

Il metodo LinearGradientBrush::GetInterpolationColorCount ottiene il numero di colori attualmente impostato per essere interpolato per questo pennello sfumatura lineare.

Sintassi

INT GetInterpolationColorCount();

Valore restituito

Tipo: INT

Questo metodo restituisce il numero di colori da interpolare per questo pennello sfumatura lineare. Se non sono stati impostati colori usando LinearGradientBrush::SetInterpolationColors o se le posizioni non valide sono state passate a LinearGradientBrush::SetInterpolationColors, LinearGradientBrush::GetInterpolationColorCount restituisce 0.

Commenti

Un semplice pennello a sfumatura lineare ha due colori: un colore al limite iniziale e un colore al limite finale. Quando si dipinge con tale pennello, il colore cambia gradualmente dal colore iniziale al colore finale mentre si passa dal limite iniziale al limite finale. È possibile creare una sfumatura più complessa usando il metodo LinearGradientBrush::SetInterpolationColors per specificare una matrice di colori e le relative posizioni di blend corrispondenti da interpolare per questo pennello sfumatura lineare.

È possibile ottenere i colori e le posizioni di blend attualmente impostate per un pennello sfumatura lineare chiamando il metodo LinearGradientBrush::GetInterpolationColors . Prima di chiamare il metodo LinearGradientBrush::GetInterpolationColors , è necessario allocare due buffer: uno per contenere la matrice di colori e uno per contenere la matrice di posizioni di blend. È possibile chiamare il metodo LinearGradientBrush::GetInterpolationColorCount per determinare le dimensioni necessarie di tali buffer. Le dimensioni del buffer dei colori sono il valore restituito di LinearGradientBrush::GetInterpolationColorCount moltiplicato per sizeof(Color). La dimensione del buffer delle posizioni di blend è il valore di LinearGradientBrush::GetInterpolationColorCount moltiplicato per sizeof( REAL).

Esempio

L'esempio seguente imposta i colori da interpolare per questo pennello sfumatura lineare su rosso, blu e verde e imposta le posizioni di blend su 0, 0,3 e 1. Il codice chiama il metodo LinearGradientBrush::GetInterpolationColorCount di un oggetto LinearGradientBrush per ottenere il numero di colori attualmente impostato per essere interpolato per il pennello. Successivamente, il codice ottiene i colori e le relative posizioni. Quindi, il codice riempie un piccolo rettangolo con ogni colore.

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

   // Create a linear gradient brush, and set the colors to be interpolated.
   Color col[] = {
      Color(255, 255, 0, 0),   // red
      Color(255, 0, 0, 255),   // blue
      Color(255, 0, 255, 0)};  // green

   REAL pos[] = {
      0.0f,   // red at the left edge
      0.3f,   // blue at 30 percent of the distance from 
              // left edge to right edge
      1.0f};  // green at the right edge

   LinearGradientBrush linGrBrush(
      Point(0, 0), 
      Point(100, 0),
      Color(255, 0, 0, 0),         // black
      Color(255, 255, 255, 255));  // white

   linGrBrush.SetInterpolationColors(col, pos, 3);

   // Obtain information about the linear gradient brush.
   INT    colorCount = 0;
   Color* colors = NULL;
   REAL*  positions = NULL;

   // How many colors have been specified to be interpolated 
   // for this brush?
   colorCount = linGrBrush.GetInterpolationColorCount();

   // Allocate a buffer large enough to hold the set of colors.
   colors = new Color[colorCount];

   // Allocate a buffer to hold the relative positions of the colors.
   positions = REAL[colorCount];

   // Get the colors and their relative positions.
   linGrBrush.GetInterpolationColors(colors, positions, colorCount);

   // Fill a small rectangle with each of the colors.
   SolidBrush* pSolidBrush;
   for(INT j = 0; j < colorCount; j++)
   {
      pSolidBrush = new SolidBrush(colors[j]);
      myGraphics.FillRectangle(pSolidBrush, 15*j, 0, 10, 10);
      delete(pSolidBrush);
   }
}

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

Color

Creazione di una sfumatura lineare

Riempimento di una forma con sfumatura di colore

LinearGradientBrush

LinearGradientBrush::GetInterpolationColors

LinearGradientBrush::SetInterpolationColors

PathGradientBrush

Rect

Solidbrush