Partager via


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

Pinceaux et formes remplies

Color

Création d’un dégradé de chemin

Remplissage d’une forme avec un dégradé de couleurs

PathGradientBrush

PathGradientBrush ::GetInterpolationColorCount

PathGradientBrush ::SetInterpolationColors