Graphics.MeasureCharacterRanges Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.
- 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
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
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.
- 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
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.