Graphics::MeasureCharacterRanges-Methode (gdiplusgraphics.h)
Die Graphics::MeasureCharacterRanges-Methode ruft eine Reihe von Regionen ab, von denen jeder einen Bereich von Zeichenpositionen innerhalb einer Zeichenfolge begrenzt.
Syntax
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
);
Parameter
[in] string
Typ: const WCHAR*
Zeiger auf eine Breitzeichenzeichenfolge.
[in] length
Typ: INT
Eine ganze Zahl, die die Anzahl der Zeichen im Zeichenfolgenarray angibt. Wenn der Zeichenfolgenparameter auf eine MIT NULL beendete Zeichenfolge zeigt, kann dieser Parameter auf –1 festgelegt werden.
[in] font
Typ: const Font*
Zeiger auf ein Font-Objekt , das die Schriftartmerkmale (Familienname, Größe und Stil der Schriftart) angibt, die auf die Zeichenfolge angewendet werden sollen.
[in, ref] layoutRect
Typ: const Rectf
Verweis auf ein Rechteck, das die Zeichenfolge begrenzt.
[in] stringFormat
Typ: const StringFormat*
Zeiger auf ein StringFormat-Objekt , das die Zeichenbereiche und Layoutinformationen angibt, z. B. Ausrichtung, Kürzung, Tabstopps usw.
[in] regionCount
Typ: INT
Eine ganze Zahl, die die Anzahl der Regionen angibt, die in das Regionsarray empfangen werden sollen. Diese Zahl sollte gleich der Anzahl von Zeichenbereichen sein, die derzeit im StringFormat-Objekt enthalten sind.
[out] regions
Typ: Region*
Zeiger auf ein Array von Region-Objekten , das die Regionen empfängt, von denen jede einen Textbereich begrenzt.
Rückgabewert
Typ: Status
Wenn die Methode erfolgreich ist, gibt sie OK zurück, ein Element der Status-Enumeration .
Wenn die Methode fehlschlägt, wird eines der anderen Elemente der Status-Enumeration zurückgegeben.
Hinweise
Ein Zeichenbereich ist ein Bereich von Zeichenpositionen innerhalb einer Textzeichenfolge. Der Bereich der Anzeige, der von einer Gruppe von Zeichen belegt wird, die vom Zeichenbereich angegeben werden, ist der begrenzungsgebundene Bereich. Ein Zeichenbereich wird durch SetMeasurableCharacterRanges festgelegt. Die Anzahl der derzeit festgelegten Bereiche kann durch Aufrufen von GetMeasurableCharacterRangeCount bestimmt werden. Diese Zahl ist auch die Anzahl der Regionen, die von der MeasureCharacterRanges-Methode abgerufen werden sollen.
Beispiele
Im folgenden Beispiel werden drei Bereiche von Zeichenpositionen innerhalb einer Zeichenfolge definiert und diese Bereiche in einem StringFormat-Objekt festgelegt. Als Nächstes wird die MeasureCharacterRanges-Methode verwendet, um die drei Bereiche der Anzeige abzurufen, die von den von den Bereichen angegebenen Zeichen belegt sind. Dies erfolgt für drei verschiedene Layoutrechtecke, um anzuzeigen, wie sich die Bereiche entsprechend dem Layout der Zeichenfolge ändern. Außerdem werden bei der dritten Wiederholung die Zeichenfolgenformatflags geändert, sodass die gemessenen Bereiche nachfolgende Leerzeichen enthalten.
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;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP, Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | gdiplusgraphics.h (include Gdiplus.h) |
Bibliothek | Gdiplus.lib |
DLL | Gdiplus.dll |