Partager via


Graphics::MeasureCharacterRanges, méthode (gdiplusgraphics.h)

La méthode Graphics::MeasureCharacterRanges obtient un ensemble de régions dont chacune limite une plage de positions de caractères dans une chaîne.

Syntaxe

Status MeasureCharacterRanges(
  [in]      const WCHAR        *string,
  [in]      INT                length,
  [in]      const Font         *font,
  [in, ref] const RectF &      layoutRect,
  [in]      const StringFormat *stringFormat,
  [in]      INT                regionCount,
  [out]     Region             *regions
);

Paramètres

[in] string

Type : const WCHAR*

Pointeur vers une chaîne à caractères larges.

Important Pour les langues bidirectionnelles, telles que l’arabe, la longueur de chaîne ne doit pas dépasser 2 046 caractères.
 

[in] length

Type : INT

Entier qui spécifie le nombre de caractères dans le tableau de chaînes . Si le paramètre de chaîne pointe vers une chaîne terminée par null, ce paramètre peut être défini sur –1.

[in] font

Type : const Font*

Pointeur vers un objet Font qui spécifie les caractéristiques de police (nom de famille, taille et style de la police) à appliquer à la chaîne.

[in, ref] layoutRect

Type : const Rectf

Référence à un rectangle qui limite la chaîne.

[in] stringFormat

Type : const StringFormat*

Pointeur vers un objet StringFormat qui spécifie les plages de caractères et les informations de disposition, telles que l’alignement, le découpage, les tabulations, etc.

[in] regionCount

Type : INT

Entier qui spécifie le nombre de régions qui sont censées être reçues dans le tableau de régions . Ce nombre doit être égal au nombre de plages de caractères actuellement dans l’objet StringFormat .

[out] regions

Type : Région*

Pointeur vers un tableau d’objets Region qui reçoit les régions, chacune d’elles englobant une plage de texte.

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 .

Notes

Une plage de caractères est une plage de positions de caractères dans une chaîne de texte. La zone de l’affichage occupée par un groupe de caractères spécifiés par la plage de caractères est la région englobante. Une plage de caractères est définie par SetMeasurableCharacterRanges. Le nombre de plages actuellement définies peut être déterminé en appelant GetMeasurableCharacterRangeCount. Ce nombre est également le nombre de régions qui doivent être obtenues par la méthode MeasureCharacterRanges .

Exemples

L’exemple suivant définit trois plages de positions de caractères dans une chaîne et définit ces plages dans un objet StringFormat . Ensuite, la méthode MeasureCharacterRanges est utilisée pour obtenir les trois régions de l’affichage occupées par les caractères spécifiés par les plages. Cela est effectué pour trois rectangles de disposition différents pour montrer comment les régions changent en fonction de la disposition de la chaîne. En outre, lors de la troisième répétition, les indicateurs de format de chaîne sont modifiés afin que les régions mesurées incluent des espaces de fin.

VOID MeasureCharRanges(HDC hdc)
{
   Graphics graphics(hdc);

   // Brushes and pens used for drawing and painting
   SolidBrush blueBrush(Color(255, 0, 0, 255));
   SolidBrush redBrush(Color(100, 255, 0, 0));
   Pen        blackPen(Color(255, 0, 0, 0));

   // Layout rectangles used for drawing strings
   RectF   layoutRect_A(20.0f, 20.0f, 130.0f, 130.0f);
   RectF   layoutRect_B(160.0f, 20.0f, 165.0f, 130.0f);
   RectF   layoutRect_C(335.0f, 20.0f, 165.0f, 130.0f);

   // Three different ranges of character positions within the string
   CharacterRange charRanges[3] = { CharacterRange(3, 5),
                                    CharacterRange(15, 2),
                                    CharacterRange(30, 15), };

   // Font and string format to apply to string when drawing
   Font         myFont(L"Times New Roman", 16.0f);
   StringFormat strFormat;

    // Other variables
   Region* pCharRangeRegions; // pointer to CharacterRange regions
   short   i;                 // loop counter
   INT     count;             // number of character ranges set
   WCHAR   string[] = L"The quick, brown fox easily jumps over the lazy dog.";


   // Set three ranges of character positions.
   strFormat.SetMeasurableCharacterRanges(3, charRanges);

   // Get the number of ranges that have been set, and allocate memory to 
   // store the regions that correspond to the ranges.
   count = strFormat.GetMeasurableCharacterRangeCount();
   pCharRangeRegions = new Region[count];

   // Get the regions that correspond to the ranges within the string when
   // layout rectangle A is used. Then draw the string, and show the regions.
   graphics.MeasureCharacterRanges(string, -1,
      &myFont, layoutRect_A, &strFormat, count, pCharRangeRegions);
   graphics.DrawString(string, -1,
      &myFont, layoutRect_A, &strFormat, &blueBrush);
   graphics.DrawRectangle(&blackPen, layoutRect_A);
   for ( i = 0; i < count; i++)
   {
      graphics.FillRegion(&redBrush, pCharRangeRegions + i);
   }

   // Get the regions that correspond to the ranges within the string when
   // layout rectangle B is used. Then draw the string, and show the regions.
   graphics.MeasureCharacterRanges(string, -1,
      &myFont, layoutRect_B, &strFormat, count, pCharRangeRegions);
   graphics.DrawString(string, -1,
      &myFont, layoutRect_B, &strFormat, &blueBrush);
   graphics.DrawRectangle(&blackPen, layoutRect_B);
   for ( i = 0; i < count; i++)
   {
      graphics.FillRegion(&redBrush, pCharRangeRegions + i);
   }

   // Get the regions that correspond to the ranges within the string when
   // layout rectangle C is used. Set trailing spaces to be included in the
   // regions. Then draw the string, and show the regions.
   strFormat.SetFormatFlags(StringFormatFlagsMeasureTrailingSpaces);
   graphics.MeasureCharacterRanges(string, -1,
      &myFont, layoutRect_C, &strFormat, count, pCharRangeRegions);
   graphics.DrawString(string, -1,
      &myFont, layoutRect_C, &strFormat, &blueBrush);
   graphics.DrawRectangle(&blackPen, layoutRect_C);
   for ( i = 0; i < count; i++)
   {
      graphics.FillRegion(&redBrush, pCharRangeRegions + i);
   }
   // Delete memory for the range regions.
   delete [] pCharRangeRegions;
}

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

Voir aussi

CharacterRange

GetMeasurableCharacterRangeCount

Graphismes

SetMeasurableCharacterRanges