Graphics.MeasureCharacterRanges 方法

定义

重载

MeasureCharacterRanges(ReadOnlySpan<Char>, Font, RectangleF, StringFormat)

获取 Region 对象的数组,其中每个对象绑定指定字符串中的字符位置范围。

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

获取 Region 对象的数组,其中每个对象绑定指定字符串中的字符位置范围。

MeasureCharacterRanges(ReadOnlySpan<Char>, Font, RectangleF, StringFormat)

Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs

获取 Region 对象的数组,其中每个对象绑定指定字符串中的字符位置范围。

C#
public System.Drawing.Region[] MeasureCharacterRanges(ReadOnlySpan<char> text, System.Drawing.Font font, System.Drawing.RectangleF layoutRect, System.Drawing.StringFormat? stringFormat);

参数

text
ReadOnlySpan<Char>

要度量的字符串。

font
Font

定义字符串文本格式的 Font

layoutRect
RectangleF

RectangleF 结构,该结构指定字符串的布局矩形。

stringFormat
StringFormat

表示字符串的格式信息(如行距)的 StringFormat

返回

Region[]

此方法返回 Region 对象的数组,其中每个对象都绑定指定字符串中的字符位置范围。

适用于

.NET 10 (package-provided) 和其他版本
产品 版本
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
Windows Desktop 8, 9, 10

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs
Source:
Graphics.cs

获取 Region 对象的数组,其中每个对象绑定指定字符串中的字符位置范围。

C#
public System.Drawing.Region[] MeasureCharacterRanges(string? text, System.Drawing.Font font, System.Drawing.RectangleF layoutRect, System.Drawing.StringFormat? stringFormat);
C#
public System.Drawing.Region[] MeasureCharacterRanges(string text, System.Drawing.Font font, System.Drawing.RectangleF layoutRect, System.Drawing.StringFormat stringFormat);

参数

text
String

要度量的字符串。

font
Font

定义字符串文本格式的 Font

layoutRect
RectangleF

RectangleF 结构,该结构指定字符串的布局矩形。

stringFormat
StringFormat

表示字符串的格式信息(如行距)的 StringFormat

返回

Region[]

此方法返回 Region 对象的数组,其中每个对象都绑定指定字符串中的字符位置范围。

例外

font null

示例

下面的代码示例设计用于 Windows 窗体,它需要 PaintEventArgse,这是 Paint 事件处理程序的参数。 该代码执行以下操作:

  • 设置字符串“First and Second ranges”和一个字体以显示字符串(“Times New Roman”, 16 磅)。

  • 在字符串中设置两个字符范围(对应于单词“First”和“Second”)。

  • 创建一个用于显示字符串的矩形。

  • 设置字符串 3/4 的格式,包括两个字符范围。

  • 将字符串绘制到屏幕。

  • 度量字符范围,确定绑定两个指定范围的矩形。

  • 将两个矩形绘制到屏幕。

结果是显示字符串,第一个区域(“First”)由红色矩形绑定,第二个区域(“Second”)由蓝色矩形绑定。

C#
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 10 (package-provided) 和其他版本
产品 版本
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10