Compartir a través de


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

El método LinearGradientBrush::GetBlend obtiene los factores de mezcla y sus posiciones de mezcla correspondientes de un objeto LinearGradientBrush .

Sintaxis

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

Parámetros

[out] blendFactors

Tipo: REAL*

Puntero a una matriz que recibe los factores de mezcla. Cada número de la matriz indica un porcentaje del color final y está en el intervalo comprendido entre 0,0 y 1,0.

[out] blendPositions

Tipo: REAL*

Puntero a una matriz que recibe las posiciones de mezcla. Cada número de la matriz indica un porcentaje de la distancia entre el límite inicial y el límite final y está en el intervalo comprendido entre 0,0 y 1,0, donde 0,0 indica el límite inicial del degradado y 1,0 indica el límite final. Una posición de combinación entre 0,0 y 1,0 indica una línea, paralela a las líneas de límite, que es una determinada fracción de la distancia desde el límite inicial hasta el límite final. Por ejemplo, una posición de combinación de 0,7 indica la línea que es el 70 por ciento de la distancia desde el límite inicial hasta el límite final. El color es constante en líneas que son paralelas a las líneas de límite.

[in] count

Tipo: INT

Entero que especifica el número de factores de mezcla que se van a recuperar. Antes de llamar al método LinearGradientBrush::GetBlend de un objeto LinearGradientBrush , llame al método LinearGradientBrush::GetBlendCount de ese mismo objeto LinearGradientBrush para determinar el número actual de factores de mezcla. El número de posiciones de mezcla recuperadas es el mismo que el número de factores de mezcla recuperados.

Valor devuelto

Tipo: Estado

Si el método se realiza correctamente, devuelve Ok, que es un elemento de la enumeración Status .

Si se produce un error en el método, devuelve uno de los otros elementos de la enumeración Status .

Comentarios

Un objeto LinearGradientBrush tiene dos límites paralelos: un límite inicial y un límite final. Un color está asociado a cada uno de estos dos límites. Cada límite es una línea recta que pasa a través de un punto especificado: el límite inicial pasa a través del punto inicial; el límite final pasa por el punto final y es perpendicular a la dirección del pincel de degradado lineal. La dirección del pincel de degradado lineal sigue la línea definida por los puntos iniciales y finales. Esta línea, la "línea direccional", puede ser horizontal, vertical o diagonal. Todos los puntos que se encuentran en una línea paralela a los límites son del mismo color. Cuando se rellena un área con un pincel degradado lineal, el color cambia gradualmente de una línea a la siguiente a medida que se mueve a lo largo de la línea direccional desde el límite inicial hasta el límite final. De forma predeterminada, el cambio de color es proporcional al cambio en la distancia; es decir, una línea 30 por ciento de la distancia entre el límite inicial y el límite final tiene un color que es el 30 por ciento de la distancia entre el color de límite inicial y el color de límite final. El patrón de color se repite fuera de los límites inicial y final.

Puede llamar al método LinearGradientBrush::SetBlend de un objeto LinearGradientBrush para personalizar la relación entre el color y la distancia. Por ejemplo, supongamos que establece las posiciones de mezcla en {0, 0,5, 1} y establece los factores de mezcla en {0, 0,3, 1}. A continuación, una línea 50 por ciento de la distancia entre el límite inicial y el límite final tendrá un color que es el 30 por ciento de la distancia entre el color de límite inicial y el color del límite final.

Ejemplos

En el ejemplo siguiente se crea un pincel de degradado lineal, se establece su mezcla y se usa el pincel para rellenar un rectángulo. A continuación, el código obtiene la combinación. Los factores de mezcla y las posiciones se pueden inspeccionar o usar de alguna manera.

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 compatible Windows XP, Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado gdiplusbrush.h (include Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

Pinceles y formas rellenas

Rellenar formas con un pincel degradado

Rellenar una forma con un degradado de color

LinearGradientBrush

LinearGradientBrush::GetBlendCount

LinearGradientBrush::SetBlend

Point