Compartilhar via


Método LinearGradientBrush::GetBlend (gdiplusbrush.h)

O método LinearGradientBrush::GetBlend obtém os fatores de mesclagem e suas posições de combinação correspondentes de um objeto LinearGradientBrush .

Sintaxe

Status GetBlend(
  [out] REAL *blendFactors,
  [out] REAL *blendPositions,
  [in]  INT  count
);

Parâmetros

[out] blendFactors

Tipo: REAL*

Ponteiro para uma matriz que recebe os fatores de mesclagem. Cada número na matriz indica uma porcentagem da cor final e está no intervalo de 0,0 a 1,0.

[out] blendPositions

Tipo: REAL*

Ponteiro para uma matriz que recebe as posições de mesclagem. Cada número na matriz indica um percentual da distância entre o limite inicial e o limite final e está no intervalo de 0,0 a 1,0, em que 0,0 indica o limite inicial do gradiente e 1,0 indica o limite final. Uma posição de mesclagem entre 0,0 e 1,0 indica uma linha, paralela às linhas de limite, que é uma determinada fração da distância do limite inicial até o limite final. Por exemplo, uma posição de mesclagem de 0,7 indica a linha que é 70% da distância do limite inicial até o limite final. A cor é constante em linhas paralelas às linhas de limite.

[in] count

Tipo: INT

Inteiro que especifica o número de fatores de mesclagem a serem recuperados. Antes de chamar o método LinearGradientBrush::GetBlend de um objeto LinearGradientBrush , chame o método LinearGradientBrush::GetBlendCount do mesmo objeto LinearGradientBrush para determinar o número atual de fatores de mistura. O número de posições de mesclagem recuperadas é o mesmo que o número de fatores de mesclagem recuperados.

Valor retornado

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 objeto LinearGradientBrush tem dois limites paralelos: um limite inicial e um limite final. Uma cor é associada a cada um desses dois limites. Cada limite é uma linha reta que passa por um ponto especificado — o limite inicial passa pelo ponto inicial; o limite final passa pelo ponto final e é perpendicular à direção do pincel de gradiente linear. A direção do pincel de gradiente linear segue a linha definida pelos pontos inicial e final. Essa linha, a "linha direcional", pode ser horizontal, vertical ou diagonal. Todos os pontos que estão em uma linha paralela aos limites são da mesma cor. Quando você preenche uma área com um pincel de gradiente linear, a cor muda gradualmente de uma linha para outra à medida que você se move ao longo da linha direcional do limite inicial para o limite final. Por padrão, a alteração na cor é proporcional à alteração na distância; ou seja, uma linha de 30% da distância entre o limite inicial e o limite final tem uma cor que é 30% da distância entre a cor do limite inicial e a cor do limite final. O padrão de cor é repetido fora dos limites inicial e final.

Você pode chamar o método LinearGradientBrush::SetBlend de um objeto LinearGradientBrush para personalizar a relação entre cor e distância. Por exemplo, suponha que você defina as posições de mesclagem como {0, 0,5, 1} e defina os fatores de combinação como {0, 0,3, 1}. Em seguida, uma linha de 50% da distância entre o limite inicial e o limite final terá uma cor de 30% da distância entre a cor do limite inicial e a cor de limite final.

Exemplos

O exemplo a seguir cria um pincel de gradiente linear, define sua mistura e usa o pincel para preencher um retângulo. Em seguida, o código obtém a combinação. Os fatores e as posições de mesclagem podem ser inspecionados ou usados de alguma forma.

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

   // Create a linear gradient brush, and set its blend.
   REAL fac[] = {0.0f, 0.4f, 0.6f, 1.0f};
   REAL pos[] = {0.0f, 0.2f, 0.8f, 1.0f};

   LinearGradientBrush linGrBrush(
      Point(0, 0), 
      Point(100, 0),
      Color(255, 255, 0, 0),   // red
      Color(255, 0, 0, 255));  // blue

   linGrBrush.SetBlend(fac, pos, 4);

   // Use the linear gradient brush to fill a rectangle.
   myGraphics.FillRectangle(&linGrBrush, 0, 0, 100, 50);

   // Obtain information about the linear gradient brush.
   INT   blendCount;
   REAL* factors = NULL;
   REAL* positions = NULL;

   blendCount = linGrBrush.GetBlendCount();
   factors = new REAL[blendCount];
   positions = new REAL[blendCount];

   linGrBrush.GetBlend(factors, positions, blendCount);

   for(INT j = 0; j < blendCount; ++j)
   {
      // Inspect or use the value in factors[j].
      // Inspect or use the value in positions[j].
   }
}

Requisitos

   
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 gdiplusbrush.h (inclua Gdiplus.h)
Biblioteca Gdiplus.lib
DLL Gdiplus.dll

Confira também

Pincéis e formas preenchidas

Preenchendo formas com um pincel de gradiente

Preenchendo uma forma com um gradiente de cor

LinearGradientBrush

LinearGradientBrush::GetBlendCount

LinearGradientBrush::SetBlend

Ponto