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
Rellenar formas con un pincel degradado
Rellenar una forma con un degradado de color