StringFormat.SetMeasurableCharacterRanges(CharacterRange[]) 方法

定义

指定一个由 CharacterRange 结构构成的数组,这些结构表示调用 MeasureCharacterRanges(String, Font, RectangleF, StringFormat) 方法所度量的字符范围。

public:
 void SetMeasurableCharacterRanges(cli::array <System::Drawing::CharacterRange> ^ ranges);
public void SetMeasurableCharacterRanges (System.Drawing.CharacterRange[] ranges);
member this.SetMeasurableCharacterRanges : System.Drawing.CharacterRange[] -> unit
Public Sub SetMeasurableCharacterRanges (ranges As CharacterRange())

参数

ranges
CharacterRange[]

一个由 CharacterRange 结构构成的数组,该数组指定调用 MeasureCharacterRanges(String, Font, RectangleF, StringFormat) 方法所度量的字符范围。

例外

设置了超过 32 个字符的范围。

示例

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

  • 设置 StringFormat的字符范围。

  • 度量给定字符串和布局矩形的字符范围。

  • 绘制字符串和布局矩形。

  • 绘制区域。 每个 Region 指定由一系列字符占用的区域。 当字符范围由 MeasureCharacterRanges 方法测量时,将设置区域中的值。

  • 重复前四个步骤,但包括每个字符范围的度量中的尾随空格。

  • 清除 StringFormat 的格式标志,以便在每个字符范围的度量中不包含尾随空格。

  • 重复前四个步骤,但使用不同的布局矩形来演示布局矩形会影响字符范围的度量。 字体大小也会影响度量。

void SetMeasCharRangesExample( PaintEventArgs^ e )
{
   Graphics^ g = e->Graphics;
   SolidBrush^ redBrush = gcnew SolidBrush( Color::FromArgb( 50, 255, 0, 0 ) );

   // Layout rectangles, font, and string format used for displaying string.
   Rectangle layoutRectA = Rectangle(20,20,165,80);
   Rectangle layoutRectB = Rectangle(20,110,165,80);
   Rectangle layoutRectC = Rectangle(20,200,240,80);
   System::Drawing::Font^ tnrFont = gcnew System::Drawing::Font( "Times New Roman",16 );
   StringFormat^ strFormat = gcnew StringFormat;

   // Ranges of character positions within a string.
   array<CharacterRange>^ charRanges = {CharacterRange(3,5),CharacterRange(15,2),CharacterRange(30,15)};

   // Each region specifies the area occupied by the characters within a
   // range of positions. the values are obtained by using a method that
   // measures the character ranges.
   array<System::Drawing::Region^>^charRegions = gcnew array<System::Drawing::Region^>(charRanges->Length);

   // String to be displayed.
   String^ str = "The quick, brown fox easily jumps over the lazy dog.";

   // Set the char ranges for the string format.
   strFormat->SetMeasurableCharacterRanges( charRanges );

   // loop counter (unsigned 8-bit integer)
   Byte i;

   // Measure the char ranges for a given string and layout rectangle. Each
   // area occupied by the characters in a range is stored as a region. Then
   // draw the string and layout rectangle, and paint the regions.
   charRegions = g->MeasureCharacterRanges( str, tnrFont, layoutRectA, strFormat );
   g->DrawString( str, tnrFont, Brushes::Blue, layoutRectA, strFormat );
   g->DrawRectangle( Pens::Black, layoutRectA );

   // Paint the regions.
   for ( i = 0; i < charRegions->Length; i++ )
      g->FillRegion( redBrush, charRegions[ i ] );

   // Repeat the above steps, but include trailing spaces in the char
   // range measurement by setting the appropriate string format flag.
   strFormat->FormatFlags = StringFormatFlags::MeasureTrailingSpaces;
   charRegions = g->MeasureCharacterRanges( str, tnrFont, layoutRectB, strFormat );
   g->DrawString( str, tnrFont, Brushes::Blue, layoutRectB, strFormat );
   g->DrawRectangle( Pens::Black, layoutRectB );
   for ( i = 0; i < charRegions->Length; i++ )
      g->FillRegion( redBrush, charRegions[ i ] );

   // Clear all the format flags.
   strFormat->FormatFlags = StringFormatFlags(0);

   // Repeat the steps, but use a different layout rectangle. the dimensions
   // of the layout rectangle and the size of the font both affect the
   // character range measurement.
   charRegions = g->MeasureCharacterRanges( str, tnrFont, layoutRectC, strFormat );
   g->DrawString( str, tnrFont, Brushes::Blue, layoutRectC, strFormat );
   g->DrawRectangle( Pens::Black, layoutRectC );

   // Paint the regions.
   for ( i = 0; i < charRegions->Length; i++ )
      g->FillRegion( redBrush, charRegions[ i ] );
}
public void SetMeasCharRangesExample(PaintEventArgs e)
{
    Graphics     g = e.Graphics;
    SolidBrush   redBrush = new SolidBrush(Color.FromArgb(50, 255, 0, 0));
             
    // Layout rectangles, font, and string format used for displaying string.
    Rectangle    layoutRectA = new Rectangle(20, 20, 165, 80);
    Rectangle    layoutRectB = new Rectangle(20, 110, 165, 80);
    Rectangle    layoutRectC = new Rectangle(20, 200, 240, 80);
    Font         tnrFont = new Font("Times New Roman", 16);
    StringFormat strFormat = new StringFormat();
             
    // Ranges of character positions within a string.
    CharacterRange[] charRanges = { new CharacterRange(3, 5),
        new CharacterRange(15, 2), new CharacterRange(30, 15)};
             
    // Each region specifies the area occupied by the characters within a
    // range of positions. the values are obtained by using a method that
    // measures the character ranges.
    Region[]     charRegions = new Region[charRanges.Length];
             
    // String to be displayed.
    string  str =
        "The quick, brown fox easily jumps over the lazy dog.";
             
    // Set the char ranges for the string format.
    strFormat.SetMeasurableCharacterRanges(charRanges);
   
    // loop counter (unsigned 8-bit integer)
    byte  i;    
   
    // Measure the char ranges for a given string and layout rectangle. Each
    // area occupied by the characters in a range is stored as a region. Then
    // draw the string and layout rectangle, and paint the regions.
    charRegions = g.MeasureCharacterRanges(str, tnrFont,
        layoutRectA, strFormat);
   g.DrawString(str, tnrFont, Brushes.Blue, layoutRectA, strFormat);
    g.DrawRectangle(Pens.Black, layoutRectA);
     
    // Paint the regions.
    for (i = 0; i < charRegions.Length; i++)
        g.FillRegion(redBrush, charRegions[i]);   

    // Repeat the above steps, but include trailing spaces in the char
    // range measurement by setting the appropriate string format flag.
    strFormat.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
    charRegions = g.MeasureCharacterRanges(str, tnrFont,
        layoutRectB, strFormat);
    g.DrawString(str, tnrFont, Brushes.Blue, layoutRectB, strFormat);
    g.DrawRectangle(Pens.Black, layoutRectB);

    for (i = 0; i < charRegions.Length; i++)
        g.FillRegion(redBrush, charRegions[i]);   
   
    // Clear all the format flags.
    strFormat.FormatFlags = 0;                   
 
    // Repeat the steps, but use a different layout rectangle. the dimensions
    // of the layout rectangle and the size of the font both affect the
    // character range measurement.
    charRegions = g.MeasureCharacterRanges(str, tnrFont,
        layoutRectC, strFormat);
    g.DrawString(str, tnrFont, Brushes.Blue, layoutRectC, strFormat);
    g.DrawRectangle(Pens.Black, layoutRectC);
    
    // Paint the regions.
    for (i = 0; i < charRegions.Length; i++)
        g.FillRegion(redBrush, charRegions[i]);   
}
Public Sub SetMeasCharRangesExample(ByVal e As PaintEventArgs)
    Dim g As Graphics = e.Graphics
    Dim redBrush As New SolidBrush(Color.FromArgb(50, 255, 0, 0))

    ' Layout rectangles, font, and string format used for
    ' displaying string.
    Dim layoutRectA As New Rectangle(20, 20, 165, 80)
    Dim layoutRectB As New Rectangle(20, 110, 165, 80)
    Dim layoutRectC As New Rectangle(20, 200, 240, 80)
    Dim tnrFont As New Font("Times New Roman", 16)
    Dim strFormat As New StringFormat

    ' Ranges of character positions within a string.
    Dim charRanges As CharacterRange() = {New CharacterRange(3, 5), _
    New CharacterRange(15, 2), New CharacterRange(30, 15)}

    ' Each region specifies the area occupied by the characters within
    ' a range of positions. The values are obtained by using a method
    ' that measures the character ranges.
    Dim charRegions(charRanges.Length) As [Region]

    ' String to be displayed.
    Dim str As String = _
    "The quick, brown fox easily jumps over the lazy dog."

    ' Set the char ranges for the string format.
    strFormat.SetMeasurableCharacterRanges(charRanges)

    ' Loop counter (unsigned 8-bit integer).
    Dim i As Byte


    ' Measure the char ranges for a given string and layout rectangle.
    ' Each area occupied by the characters in a range is stored as a
    ' region. then draw the string and layout rectangle and paint the
    ' regions.
    charRegions = g.MeasureCharacterRanges(str, tnrFont, _
    RectangleF.op_Implicit(layoutRectA), strFormat)
    g.DrawString(str, tnrFont, Brushes.Blue, _
    RectangleF.op_Implicit(layoutRectA), strFormat)
    g.DrawRectangle(Pens.Black, layoutRectA)

    ' Paint the regions.
    For i = 0 To charRegions.Length - 1
        g.FillRegion(redBrush, charRegions(i))
    Next i

    ' Repeat the above steps, but include trailing spaces in the char
    ' range measurement by setting the appropriate string format flag.
    strFormat.FormatFlags = StringFormatFlags.MeasureTrailingSpaces
    charRegions = g.MeasureCharacterRanges(str, tnrFont, _
    RectangleF.op_Implicit(layoutRectB), strFormat)
    g.DrawString(str, tnrFont, Brushes.Blue, _
    RectangleF.op_Implicit(layoutRectB), strFormat)
    g.DrawRectangle(Pens.Black, layoutRectB)

    ' Paint the regions.
    For i = 0 To charRegions.Length - 1
        g.FillRegion(redBrush, charRegions(i))
    Next i

    ' Clear all the format flags.
    strFormat.FormatFlags = 0

    ' Repeat the steps, but use a different layout rectangle. The
    ' dimensions of the layout rectangle and the size of the font both
    ' affect the character range measurement.
    charRegions = g.MeasureCharacterRanges(str, tnrFont, _
    RectangleF.op_Implicit(layoutRectC), strFormat)
    g.DrawString(str, tnrFont, Brushes.Blue, _
    RectangleF.op_Implicit(layoutRectC), strFormat)
    g.DrawRectangle(Pens.Black, layoutRectC)

    ' Paint the regions.
    For i = 0 To charRegions.Length - 1
        g.FillRegion(redBrush, charRegions(i))
    Next i
End Sub

注解

不允许设置超过 32 个字符的范围,并将导致 System.OverflowException

适用于