Compartilhar via


Método PathGradientBrush::GetInterpolationColors (gdipluspath.h)

O método PathGradientBrush::GetInterpolationColors obtém as cores predefinidas e as posições de mesclagem especificadas atualmente para esse pincel de gradiente de caminho.

Sintaxe

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

Parâmetros

[out] presetColors

Tipo: Cor*

Ponteiro para uma matriz que recebe as cores predefinidas. Uma cor de um determinado índice na matriz presetColors corresponde à posição de mesclagem desse mesmo índice na matriz blendPositions .

[out] blendPositions

Tipo: REAL*

Ponteiro para uma matriz que recebe as posições de mesclagem. Cada posição de mesclagem é um número de 0 a 1, em que 0 indica o limite do gradiente e 1 indica o ponto central. Uma posição de mesclagem entre 0 e 1 indica o conjunto de todos os pontos que são uma determinada fração da distância do limite até o ponto central. Por exemplo, uma posição de mesclagem de 0,7 indica o conjunto de todos os pontos que são 70% do caminho do limite para o ponto central.

[in] count

Tipo: INT

Inteiro que especifica o número de elementos na matriz presetColors . Isso é o mesmo que o número de elementos na matriz blendPositions .

Retornar valor

Tipo: Status

Se o método for bem-sucedido, ele retornará Ok, que é um elemento da enumeração Status .

Se o método falhar, ele retornará um dos outros elementos da enumeração Status .

Comentários

Um pincel de gradiente de caminho simples tem duas cores: uma cor de limite e uma cor central. Quando você pinta com esse pincel, a cor muda gradualmente da cor do limite para a cor central à medida que você passa do caminho de limite para o ponto central. Você pode criar um gradiente mais complexo especificando uma matriz de cores predefinidas e uma matriz de posições de combinação.

Antes de chamar o método PathGradientBrush::GetInterpolationColors , você deve alocar dois buffers: um para manter a matriz de cores predefinidas e outro para manter a matriz de posições de mesclagem. Você pode chamar o método PathGradientBrush::GetInterpolationColorCount do objeto PathGradientBrush para determinar o tamanho necessário desses buffers. O tamanho do buffer de cores é o valor retornado de PathGradientBrush::GetInterpolationColorCount multiplicado por sizeof(Color). O tamanho do buffer de posição é o valor de PathGradientBrush::GetInterpolationColorCount multiplicado por sizeof( REAL).

Exemplos

O exemplo a seguir cria um objeto PathGradientBrush de um caminho triangular. O código define as cores predefinidas como vermelho, azul e aqua e define as posições de mesclagem como 0, 0,6 e 1. O código chama o método PathGradientBrush::GetInterpolationColorCount do objeto PathGradientBrush para obter o número de cores predefinidas definidas atualmente para o pincel. Em seguida, o código aloca dois buffers: um para manter a matriz de cores predefinidas e outro para manter a matriz de posições de mesclagem. A chamada para o método PathGradientBrush::GetInterpolationColors do objeto PathGradientBrush preenche os buffers com as cores predefinidas e as posições de mesclagem. Por fim, o código preenche um quadrado pequeno com cada uma das cores predefinidas.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP, Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho gdipluspath.h (inclua Gdiplus.h)
Biblioteca Gdiplus.lib
DLL Gdiplus.dll

Confira também

Pincéis e formas preenchidas

Cor

Criando um Gradiente de Caminho

Preenchendo uma forma com um gradiente de cor

Pathgradientbrush

PathGradientBrush::GetInterpolationColorCount

PathGradientBrush::SetInterpolationColors