Método PathGradientBrush::GetInterpolationColors (gdipluspath.h)
El método PathGradientBrush::GetInterpolationColors obtiene los colores preestablecidos y las posiciones de mezcla especificadas actualmente para este pincel de degradado de ruta.
Sintaxis
Status GetInterpolationColors(
[out] Color *presetColors,
[out] REAL *blendPositions,
[in] INT count
);
Parámetros
[out] presetColors
Tipo: Color*
Puntero a una matriz que recibe los colores preestablecidos. Un color de un índice determinado en la matriz presetColors corresponde a la posición de combinación de ese mismo índice en la matriz blendPositions .
[out] blendPositions
Tipo: REAL*
Puntero a una matriz que recibe las posiciones de mezcla. Cada posición de mezcla es un número comprendido entre 0 y 1, donde 0 indica el límite del degradado y 1 indica el punto central. Una posición de combinación entre 0 y 1 indica el conjunto de todos los puntos que son una determinada fracción de la distancia desde el límite hasta el punto central. Por ejemplo, una posición de combinación de 0,7 indica el conjunto de todos los puntos que son el 70 por ciento del camino desde el límite hasta el punto central.
[in] count
Tipo: INT
Entero que especifica el número de elementos de la matriz presetColors . Es el mismo que el número de elementos de la matriz blendPositions .
Valor devuelto
Tipo: Estado
Si el método se ejecuta 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 pincel de degradado de trazado simple tiene dos colores: un color de límite y un color central. Al pintar con un pincel de este tipo, el color cambia gradualmente del color del límite al color central a medida que se mueve de la ruta de acceso del límite al punto central. Puede crear un degradado más complejo especificando una matriz de colores preestablecidos y una matriz de posiciones de mezcla.
Antes de llamar al método PathGradientBrush::GetInterpolationColors , debe asignar dos búferes: uno para contener la matriz de colores preestablecidos y otro para contener la matriz de posiciones de mezcla. Puedes llamar al método PathGradientBrush::GetInterpolationColorCount del objeto PathGradientBrush para determinar el tamaño necesario de esos búferes. El tamaño del búfer de color es el valor devuelto de PathGradientBrush::GetInterpolationColorCount multiplicado por sizeof(Color). El tamaño del búfer de posición es el valor de PathGradientBrush::GetInterpolationColorCount multiplicado por sizeof( REAL).
Ejemplos
En el ejemplo siguiente se crea un objeto PathGradientBrush a partir de una ruta triangular. El código establece los colores preestablecidos en rojo, azul y aguamarino y establece las posiciones de mezcla en 0, 0,6 y 1. El código llama al método PathGradientBrush::GetInterpolationColorCount del objeto PathGradientBrush para obtener el número de colores preestablecidos establecidos actualmente para el pincel. A continuación, el código asigna dos búferes: uno para contener la matriz de colores preestablecidos y otro para contener la matriz de posiciones de mezcla. La llamada al método PathGradientBrush::GetInterpolationColors del objeto PathGradientBrush rellena los búferes con los colores preestablecidos y las posiciones de mezcla. Por último, el código rellena un cuadrado pequeño con cada uno de los colores preestablecidos.
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 | Value |
---|---|
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 | gdipluspath.h (incluya Gdiplus.h) |
Library | Gdiplus.lib |
Archivo DLL | Gdiplus.dll |
Consulte también
Rellenar una forma con un degradado de color