Metodo PathGradientBrush::GetInterpolationColors (gdipluspath.h)
Il metodo PathGradientBrush::GetInterpolationColors ottiene i colori predefiniti e le posizioni di fusione attualmente specificate per questo pennello sfumato del percorso.
Sintassi
Status GetInterpolationColors(
[out] Color *presetColors,
[out] REAL *blendPositions,
[in] INT count
);
Parametri
[out] presetColors
Tipo: Colore*
Puntatore a una matrice che riceve i colori predefiniti. Un colore di un determinato indice nella matrice presetColors corrisponde alla posizione di fusione dello stesso indice nella matrice blendPositions .
[out] blendPositions
Tipo: REAL*
Puntatore a una matrice che riceve le posizioni di fusione. Ogni posizione di fusione è un numero compreso tra 0 e 1, dove 0 indica il limite della sfumatura e 1 indica il punto centrale. Una posizione di fusione compresa tra 0 e 1 indica il set di tutti i punti che sono una determinata frazione della distanza dal limite al punto centrale. Ad esempio, una posizione di fusione pari a 0,7 indica il set di tutti i punti che sono il 70% della strada dal limite al punto centrale.
[in] count
Tipo: INT
Integer che specifica il numero di elementi nella matrice presetColors . Corrisponde al numero di elementi nella matrice blendPositions .
Valore restituito
Tipo: Stato
Se il metodo ha esito positivo, restituisce Ok, che è un elemento dell'enumerazione Status .
Se il metodo ha esito negativo, restituisce uno degli altri elementi dell'enumerazione Status .
Commenti
Un pennello sfumatura di percorso semplice ha due colori: un colore limite e un colore centrale. Quando si disegna con un pennello di questo tipo, il colore cambia gradualmente dal colore limite al colore centrale mentre si passa dal percorso limite al punto centrale. È possibile creare una sfumatura più complessa specificando una matrice di colori predefiniti e una matrice di posizioni di fusione.
Prima di chiamare il metodo PathGradientBrush::GetInterpolationColors , è necessario allocare due buffer: uno per contenere la matrice di colori predefiniti e uno per contenere la matrice di posizioni di fusione. È possibile chiamare il metodo PathGradientBrush::GetInterpolationColorCount dell'oggetto PathGradientBrush per determinare le dimensioni necessarie di tali buffer. La dimensione del buffer dei colori è il valore restituito di PathGradientBrush::GetInterpolationColorCount moltiplicato per sizeof(Color). Le dimensioni del buffer di posizione sono il valore di PathGradientBrush::GetInterpolationColorCount moltiplicato per sizeof( REAL).
Esempio
Nell'esempio seguente viene creato un oggetto PathGradientBrush da un percorso triangolare. Il codice imposta i colori predefiniti su rosso, blu e aqua e imposta le posizioni di fusione su 0, 0,6 e 1. Il codice chiama il metodo PathGradientBrush::GetInterpolationColorCount dell'oggetto PathGradientBrush per ottenere il numero di colori predefiniti attualmente impostati per il pennello. Il codice alloca quindi due buffer: uno per contenere la matrice di colori predefiniti e uno per contenere la matrice di posizioni di fusione. La chiamata al metodo PathGradientBrush::GetInterpolationColors dell'oggetto PathGradientBrush riempie i buffer con i colori predefiniti e le posizioni di fusione. Infine, il codice riempie un piccolo quadrato con ognuno dei colori predefiniti.
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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP, Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | gdipluspath.h (include Gdiplus.h) |
Libreria | Gdiplus.lib |
DLL | Gdiplus.dll |
Vedi anche
Creazione di una sfumatura di percorso
Riempimento di una forma con sfumatura di colore