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.
[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 |