Partager via


Méthode LinearGradientBrush::GetInterpolationColorCount (gdiplusbrush.h)

La méthode LinearGradientBrush::GetInterpolationColorCount obtient le nombre de couleurs actuellement définies pour être interpolées pour ce pinceau de dégradé linéaire.

Syntaxe

INT GetInterpolationColorCount();

Valeur de retour

Type : INT

Cette méthode retourne le nombre de couleurs à interpoler pour ce pinceau de dégradé linéaire. Si aucune couleur n’a été définie à l’aide de LinearGradientBrush::SetInterpolationColors, ou si des positions non valides ont été passées à LinearGradientBrush::SetInterpolationColors, linearGradientBrush::GetInterpolationColorCount retourne 0.

Notes

Un pinceau de dégradé linéaire simple a deux couleurs : une couleur à la limite de début et une couleur à la limite de fin. Lorsque vous peignez à l’aide d’un tel pinceau, la couleur passe progressivement de la couleur de début à la couleur de fin à mesure que vous passez de la limite de début à la limite de fin. Vous pouvez créer un dégradé plus complexe à l’aide de la méthode LinearGradientBrush::SetInterpolationColors pour spécifier un tableau de couleurs et leurs positions de fusion correspondantes à interpoler pour ce pinceau de dégradé linéaire.

Vous pouvez obtenir les couleurs et les positions de fusion actuellement définies pour un pinceau de dégradé linéaire en appelant sa méthode LinearGradientBrush::GetInterpolationColors . Avant d’appeler la méthode LinearGradientBrush::GetInterpolationColors , vous devez allouer deux mémoires tampons : l’une pour contenir le tableau de couleurs et l’autre pour contenir le tableau des positions de fusion. Vous pouvez appeler la méthode LinearGradientBrush::GetInterpolationColorCount 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 LinearGradientBrush::GetInterpolationColorCount multipliée par sizeof(Color). La taille de la mémoire tampon des positions de fusion est la valeur de LinearGradientBrush::GetInterpolationColorCount multipliée par sizeof( REAL).

Exemples

L’exemple suivant définit les couleurs à interpoler pour ce pinceau de dégradé linéaire sur le rouge, le bleu et le vert, et définit les positions de fusion sur 0, 0,3 et 1. Le code appelle la méthode LinearGradientBrush::GetInterpolationColorCount d’un objet LinearGradientBrush pour obtenir le nombre de couleurs actuellement définies pour être interpolées pour le pinceau. Ensuite, le code obtient les couleurs et leurs positions. Ensuite, le code remplit un petit rectangle avec chaque couleur.

VOID Example_GetInterpColors(HDC hdc)
{
   Graphics myGraphics(hdc);

   // Create a linear gradient brush, and set the colors to be interpolated.
   Color col[] = {
      Color(255, 255, 0, 0),   // red
      Color(255, 0, 0, 255),   // blue
      Color(255, 0, 255, 0)};  // green

   REAL pos[] = {
      0.0f,   // red at the left edge
      0.3f,   // blue at 30 percent of the distance from 
              // left edge to right edge
      1.0f};  // green at the right edge

   LinearGradientBrush linGrBrush(
      Point(0, 0), 
      Point(100, 0),
      Color(255, 0, 0, 0),         // black
      Color(255, 255, 255, 255));  // white

   linGrBrush.SetInterpolationColors(col, pos, 3);

   // Obtain information about the linear gradient brush.
   INT    colorCount = 0;
   Color* colors = NULL;
   REAL*  positions = NULL;

   // How many colors have been specified to be interpolated 
   // for this brush?
   colorCount = linGrBrush.GetInterpolationColorCount();

   // Allocate a buffer large enough to hold the set of colors.
   colors = new Color[colorCount];

   // Allocate a buffer to hold the relative positions of the colors.
   positions = REAL[colorCount];

   // Get the colors and their relative positions.
   linGrBrush.GetInterpolationColors(colors, positions, colorCount);

   // Fill a small rectangle with each of the colors.
   SolidBrush* pSolidBrush;
   for(INT j = 0; j < colorCount; j++)
   {
      pSolidBrush = new SolidBrush(colors[j]);
      myGraphics.FillRectangle(pSolidBrush, 15*j, 0, 10, 10);
      delete(pSolidBrush);
   }
}

Spécifications

   
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 gdiplusbrush.h (inclure Gdiplus.h)
Bibliothèque Gdiplus.lib
DLL Gdiplus.dll

Voir aussi

Pinceaux et formes remplies

Color

Création d’un dégradé linéaire

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

LinearGradientBrush

LinearGradientBrush::GetInterpolationColors

LinearGradientBrush::SetInterpolationColors

PathGradientBrush

Rect

SolidBrush