Metodo LinearGradientBrush::GetBlend (gdiplusbrush.h)
Il metodo LinearGradientBrush::GetBlend ottiene i fattori di blend e le relative posizioni di blend corrispondenti da un oggetto LinearGradientBrush .
Sintassi
Status GetBlend(
[out] REAL *blendFactors,
[out] REAL *blendPositions,
[in] INT count
);
Parametri
[out] blendFactors
Tipo: REAL*
Puntatore a una matrice che riceve i fattori di blend. Ogni numero nella matrice indica una percentuale del colore finale e si trova nell'intervallo compreso tra 0,0 e 1,0.
[out] blendPositions
Tipo: REAL*
Puntatore a una matrice che riceve le posizioni di blend. Ogni numero nella matrice indica una percentuale della distanza tra il limite iniziale e il limite finale e si trova nell'intervallo compreso tra 0,0 e 1,0, dove 0,0 indica il limite iniziale della sfumatura e 1,0 indica il limite finale. Una posizione di fusione compresa tra 0,0 e 1.0 indica una linea, parallela alle linee di limite, ovvero una determinata frazione della distanza dal limite iniziale al limite finale. Ad esempio, una posizione di blend pari a 0,7 indica la linea che corrisponde al 70% della distanza dal limite iniziale al limite finale. Il colore è costante su linee parallele alle linee di limite.
[in] count
Tipo: INT
Intero che specifica il numero di fattori di blend da recuperare. Prima di chiamare il metodo LinearGradientBrush::GetBlend di un oggetto LinearGradientBrush , chiamare il metodo LinearGradientBrush::GetBlendCount dello stesso oggetto LinearGradientBrush per determinare il numero corrente di fattori di blend. Il numero di posizioni di blend recuperate è uguale al numero di fattori di blend recuperati.
Valore restituito
Tipo: Stato
Se il metodo ha esito positivo, restituisce Ok, ovvero un elemento dell'enumerazione Status .
Se il metodo ha esito negativo, restituisce uno degli altri elementi dell'enumerazione Status .
Commenti
Un oggetto LinearGradientBrush ha due limiti paralleli: un limite iniziale e un limite finale. Un colore è associato a ognuno di questi due limiti. Ogni limite è una linea dritta che passa attraverso un punto specificato , il limite iniziale passa attraverso il punto iniziale; il limite finale passa attraverso il punto finale e è perpendicolare alla direzione del pennello sfumatura lineare. La direzione del pennello sfumatura lineare segue la linea definita dai punti iniziali e finali. Questa linea, la "linea direzionale", può essere orizzontale, verticale o diagonale. Tutti i punti che si trovano su una linea parallela ai limiti sono lo stesso colore. Quando si riempie un'area con un pennello a sfumatura lineare, il colore cambia gradualmente da una riga alla successiva mentre si sposta lungo la linea direzionale dal limite iniziale al limite finale. Per impostazione predefinita, la modifica del colore è proporzionale alla variazione in distanza; ovvero, una linea del 30% della distanza tra il limite iniziale e il limite finale ha un colore pari al 30% della distanza tra il colore del limite iniziale e il colore del limite finale. Il motivo di colore viene ripetuto all'esterno dei limiti iniziali e finali.
È possibile chiamare il metodo LinearGradientBrush::SetBlend di un oggetto LinearGradientBrush per personalizzare la relazione tra colore e distanza. Si supponga, ad esempio, di impostare le posizioni di blend su {0, 0,5, 1} e si impostano i fattori di blend su {0, 0,3, 1}. Una linea del 50% della distanza tra il limite iniziale e il limite finale avrà un colore pari al 30% della distanza tra il colore del limite iniziale e il colore del limite finale.
Esempio
Nell'esempio seguente viene creato un pennello sfumatura lineare, viene impostato il pennello e viene usato il pennello per riempire un rettangolo. Il codice ottiene quindi la fusione. I fattori di fusione e le posizioni possono quindi essere controllati o usati in qualche modo.
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].
}
}
Requisiti
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 | gdiplusbrush.h (include Gdiplus.h) |
Libreria | Gdiplus.lib |
DLL | Gdiplus.dll |
Vedi anche
Riempimento di forme con un pennello sfumatura
Riempimento di una forma con sfumatura di colore