Export (0) Print
Expand All

Graphics.MeasureCharacterRanges Method

Gets an array of Region objects, each of which bounds a range of character positions within the specified string.

Namespace:  System.Drawing
Assembly:  System.Drawing (in System.Drawing.dll)

public Region[] MeasureCharacterRanges(
	string text,
	Font font,
	RectangleF layoutRect,
	StringFormat stringFormat
)

Parameters

text
Type: System.String

String to measure.

font
Type: System.Drawing.Font

Font that defines the text format of the string.

layoutRect
Type: System.Drawing.RectangleF

RectangleF structure that specifies the layout rectangle for the string.

stringFormat
Type: System.Drawing.StringFormat

StringFormat that represents formatting information, such as line spacing, for the string.

Return Value

Type: System.Drawing.Region[]
This method returns an array of Region objects, each of which bounds a range of character positions within the specified string.

The regions returned by this method are resolution-dependent, so there might be a slight loss of accuracy if strings are recorded in a metafile at one resolution and later played back at a different resolution.

The following code example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of the Paint event handler. The code performs the following actions:

  • Sets a string "First and Second ranges" and a font for display of the string ("Times New Roman", 16 point).

  • Sets two character ranges within the string (which correspond to the words "First" and "Second").

  • Creates a rectangle in which to display the string.

  • Sets the formatting of the string ¾ including the two character ranges.

  • Draws the string to the screen.

  • Measures the character ranges, determines rectangles that bound the two specified ranges.

  • Draws the two rectangles to the screen.

The result is the displayed string with the first range ("First") bounded by a red rectangle and the second range ("Second") bounded by a blue rectangle.

        private void MeasureCharacterRangesRegions(PaintEventArgs e)
        {

            // Set up string. 
            string measureString = "First and Second ranges";
            Font stringFont = new Font("Times New Roman", 16.0F);

            // Set character ranges to "First" and "Second".
            CharacterRange[] characterRanges = { new CharacterRange(0, 5), new CharacterRange(10, 6) };

            // Create rectangle for layout. 
            float x = 50.0F;
            float y = 50.0F;
            float width = 35.0F;
            float height = 200.0F;
            RectangleF layoutRect = new RectangleF(x, y, width, height);

            // Set string format.
            StringFormat stringFormat = new StringFormat();
            stringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
            stringFormat.SetMeasurableCharacterRanges(characterRanges);

            // Draw string to screen.
            e.Graphics.DrawString(measureString, stringFont, Brushes.Black, x, y, stringFormat);

            // Measure two ranges in string.
            Region[] stringRegions = e.Graphics.MeasureCharacterRanges(measureString, 
		stringFont, layoutRect, stringFormat);

            // Draw rectangle for first measured range.
            RectangleF measureRect1 = stringRegions[0].GetBounds(e.Graphics);
            e.Graphics.DrawRectangle(new Pen(Color.Red, 1), Rectangle.Round(measureRect1));

            // Draw rectangle for second measured range.
            RectangleF measureRect2 = stringRegions[1].GetBounds(e.Graphics);
            e.Graphics.DrawRectangle(new Pen(Color.Blue, 1), Rectangle.Round(measureRect2));
        }

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Show:
© 2015 Microsoft