Compartilhar via


Graphics.MeasureCharacterRanges Método

Definição

Sobrecargas

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

Obtém uma matriz de objetos Region, cada um dos quais associa um intervalo de posições de caractere dentro da cadeia de caracteres especificada.

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

Obtém uma matriz de objetos Region, cada um dos quais associa um intervalo de posições de caractere dentro da cadeia de caracteres especificada.

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

Origem:
Graphics.cs
Origem:
Graphics.cs
Origem:
Graphics.cs

Obtém uma matriz de objetos Region, cada um dos quais associa um intervalo de posições de caractere dentro da cadeia de caracteres especificada.

public:
 cli::array <System::Drawing::Region ^> ^ MeasureCharacterRanges(ReadOnlySpan<char> text, System::Drawing::Font ^ font, System::Drawing::RectangleF layoutRect, System::Drawing::StringFormat ^ stringFormat);
public System.Drawing.Region[] MeasureCharacterRanges (ReadOnlySpan<char> text, System.Drawing.Font font, System.Drawing.RectangleF layoutRect, System.Drawing.StringFormat? stringFormat);
member this.MeasureCharacterRanges : ReadOnlySpan<char> * System.Drawing.Font * System.Drawing.RectangleF * System.Drawing.StringFormat -> System.Drawing.Region[]
Public Function MeasureCharacterRanges (text As ReadOnlySpan(Of Char), font As Font, layoutRect As RectangleF, stringFormat As StringFormat) As Region()

Parâmetros

text
ReadOnlySpan<Char>

Cadeia de caracteres a ser medida.

font
Font

Font que define o formato de texto da cadeia de caracteres.

layoutRect
RectangleF

RectangleF estrutura que especifica o retângulo de layout para a cadeia de caracteres.

stringFormat
StringFormat

StringFormat que representa informações de formatação, como espaçamento de linha, para a cadeia de caracteres.

Retornos

Region[]

Esse método retorna uma matriz de objetos Region, cada um dos quais associa um intervalo de posições de caractere dentro da cadeia de caracteres especificada.

Aplica-se a

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

Origem:
Graphics.cs
Origem:
Graphics.cs
Origem:
Graphics.cs
Origem:
Graphics.cs
Origem:
Graphics.cs

Obtém uma matriz de objetos Region, cada um dos quais associa um intervalo de posições de caractere dentro da cadeia de caracteres especificada.

public:
 cli::array <System::Drawing::Region ^> ^ MeasureCharacterRanges(System::String ^ text, System::Drawing::Font ^ font, System::Drawing::RectangleF layoutRect, System::Drawing::StringFormat ^ stringFormat);
public System.Drawing.Region[] MeasureCharacterRanges (string? text, System.Drawing.Font font, System.Drawing.RectangleF layoutRect, System.Drawing.StringFormat? stringFormat);
public System.Drawing.Region[] MeasureCharacterRanges (string text, System.Drawing.Font font, System.Drawing.RectangleF layoutRect, System.Drawing.StringFormat stringFormat);
member this.MeasureCharacterRanges : string * System.Drawing.Font * System.Drawing.RectangleF * System.Drawing.StringFormat -> System.Drawing.Region[]
Public Function MeasureCharacterRanges (text As String, font As Font, layoutRect As RectangleF, stringFormat As StringFormat) As Region()

Parâmetros

text
String

Cadeia de caracteres a ser medida.

font
Font

Font que define o formato de texto da cadeia de caracteres.

layoutRect
RectangleF

RectangleF estrutura que especifica o retângulo de layout para a cadeia de caracteres.

stringFormat
StringFormat

StringFormat que representa informações de formatação, como espaçamento de linha, para a cadeia de caracteres.

Retornos

Region[]

Esse método retorna uma matriz de objetos Region, cada um dos quais associa um intervalo de posições de caractere dentro da cadeia de caracteres especificada.

Exceções

font é null.

Exemplos

O exemplo de código a seguir foi projetado para uso com o Windows Forms e requer PaintEventArgse, que é um parâmetro do manipulador de eventos Paint. O código executa as seguintes ações:

  • Define uma cadeia de caracteres "Intervalos Primeiro e Segundo" e uma fonte para exibição da cadeia de caracteres ("Times New Roman", 16 pontos).

  • Define dois intervalos de caracteres dentro da cadeia de caracteres (que correspondem às palavras "Primeiro" e "Segundo").

  • Cria um retângulo no qual exibir a cadeia de caracteres.

  • Define a formatação da cadeia de caracteres 3/4, incluindo os dois intervalos de caracteres.

  • Desenha a cadeia de caracteres para a tela.

  • Mede os intervalos de caracteres, determina retângulos que associam os dois intervalos especificados.

  • Desenha os dois retângulos para a tela.

O resultado é a cadeia de caracteres exibida com o primeiro intervalo ("First") limitado por um retângulo vermelho e o segundo intervalo ("Segundo") limitado por um retângulo azul.

public:
   void MeasureCharacterRangesRegions( PaintEventArgs^ e )
   {
      // Set up string.
      String^ measureString = "First and Second ranges";
      System::Drawing::Font^ stringFont = gcnew System::Drawing::Font( "Times New Roman",16.0F );

      // Set character ranges to "First" and "Second".
      array<CharacterRange>^ characterRanges = {CharacterRange(0,5),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 = RectangleF(x,y,width,height);

      // Set string format.
      StringFormat^ stringFormat = gcnew 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.
      array<System::Drawing::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( gcnew Pen( Color::Red,1.0f ), Rectangle::Round( measureRect1 ) );

      // Draw rectangle for second measured range.
      RectangleF measureRect2 = stringRegions[ 1 ]->GetBounds( e->Graphics );
      e->Graphics->DrawRectangle( gcnew Pen( Color::Blue,1.0f ), Rectangle::Round( measureRect2 ) );
   }
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));
}
Private Sub MeasureCharacterRangesRegions(ByVal e As PaintEventArgs)

    ' Set up string.
    Dim measureString As String = "First and Second ranges"
    Dim stringFont As New Font("Times New Roman", 16.0F)

    ' Set character ranges to "First" and "Second".
    Dim characterRanges As CharacterRange() = _
    {New CharacterRange(0, 5), New CharacterRange(10, 6)}

    ' Create rectangle for layout.
    Dim x As Single = 50.0F
    Dim y As Single = 50.0F
    Dim width As Single = 35.0F
    Dim height As Single = 200.0F
    Dim layoutRect As New RectangleF(x, y, width, height)

    ' Set string format.
    Dim stringFormat As 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.
    Dim stringRegions() As [Region] = e.Graphics.MeasureCharacterRanges(measureString, _
stringFont, layoutRect, stringFormat)

    ' Draw rectangle for first measured range.
    Dim measureRect1 As RectangleF = _
    stringRegions(0).GetBounds(e.Graphics)
    e.Graphics.DrawRectangle(New Pen(Color.Red, 1), _
    Rectangle.Round(measureRect1))

    ' Draw rectangle for second measured range.
    Dim measureRect2 As RectangleF = _
    stringRegions(1).GetBounds(e.Graphics)
    e.Graphics.DrawRectangle(New Pen(Color.Blue, 1), _
    Rectangle.Round(measureRect2))
End Sub

Comentários

As regiões retornadas por esse método dependem da resolução, portanto, pode haver uma pequena perda de precisão se as cadeias de caracteres forem registradas em um metafilo em uma resolução e posteriormente reproduzidas em uma resolução diferente.

Confira também

Aplica-se a