PathGradientBrush ::GetInterpolationColors, méthode (gdipluspath.h)
La méthode PathGradientBrush ::GetInterpolationColors obtient les couleurs prédéfinies et les positions de fusion actuellement spécifiées pour ce pinceau dégradé de chemin.
Syntaxe
Status GetInterpolationColors(
[out] Color *presetColors,
[out] REAL *blendPositions,
[in] INT count
);
Paramètres
[out] presetColors
Type : Couleur*
Pointeur vers un tableau qui reçoit les couleurs prédéfinies. Une couleur d’un index donné dans le tableau presetColors correspond à la position de fusion de ce même index dans le tableau blendPositions .
[out] blendPositions
Type : REAL*
Pointeur vers un tableau qui reçoit les positions de fusion. Chaque position de fusion est un nombre compris entre 0 et 1, où 0 indique la limite du dégradé et 1 indique le point central. Une position de fusion comprise entre 0 et 1 indique l’ensemble de tous les points qui représentent une certaine fraction de la distance entre la limite et le point central. Par exemple, une position de fusion de 0,7 indique l’ensemble de tous les points qui se trouvent à 70 % du chemin entre la limite et le point central.
[in] count
Type : INT
Entier qui spécifie le nombre d’éléments dans le tableau presetColors . Il s’agit du même nombre d’éléments dans le tableau blendPositions .
Valeur retournée
Type : État
Si la méthode réussit, elle retourne Ok, qui est un élément de l’énumération Status .
Si la méthode échoue, elle retourne l’un des autres éléments de l’énumération Status .
Remarques
Un pinceau dégradé de chemin simple a deux couleurs : une couleur de limite et une couleur centrale. Lorsque vous peignez à l’aide d’un tel pinceau, la couleur passe progressivement de la couleur limite à la couleur centrale à mesure que vous passez du chemin de la limite au point central. Vous pouvez créer un dégradé plus complexe en spécifiant un tableau de couleurs prédéfinies et un tableau de positions de fusion.
Avant d’appeler la méthode PathGradientBrush ::GetInterpolationColors , vous devez allouer deux mémoires tampons : l’une pour contenir le tableau de couleurs prédéfinies et l’autre pour contenir le tableau des positions de fusion. Vous pouvez appeler la méthode PathGradientBrush ::GetInterpolationColorCount de l’objet PathGradientBrush pour déterminer la taille requise de ces mémoires tampons. La taille de la mémoire tampon de couleurs est la valeur de retour de PathGradientBrush ::GetInterpolationColorCount multipliée par sizeof(Color). La taille de la mémoire tampon de position est la valeur de PathGradientBrush ::GetInterpolationColorCount multipliée par sizeof( REAL).
Exemples
L’exemple suivant crée un objet PathGradientBrush à partir d’un chemin triangulaire. Le code définit les couleurs prédéfinies sur rouge, bleu et aqua, et définit les positions de fusion sur 0, 0,6 et 1. Le code appelle la méthode PathGradientBrush ::GetInterpolationColorCount de l’objet PathGradientBrush pour obtenir le nombre de couleurs prédéfinies actuellement définies pour le pinceau. Ensuite, le code alloue deux mémoires tampons : l’une pour contenir le tableau de couleurs prédéfinies et l’autre pour contenir le tableau de positions de fusion. L’appel à la méthode PathGradientBrush ::GetInterpolationColors de l’objet PathGradientBrush remplit les mémoires tampons avec les couleurs prédéfinies et les positions de fusion. Enfin, le code remplit un petit carré avec chacune des couleurs prédéfinies.
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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP, Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | gdipluspath.h (inclure Gdiplus.h) |
Bibliothèque | Gdiplus.lib |
DLL | Gdiplus.dll |
Voir aussi
Création d’un dégradé de chemin
Remplissage d’une forme avec un dégradé de couleurs