StringFormat.SetMeasurableCharacterRanges(CharacterRange[]) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica una matriz de estructuras de CharacterRange que representan los intervalos de caracteres medidos por una llamada al método 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())
Parámetros
- ranges
- CharacterRange[]
Matriz de estructuras CharacterRange que especifica los intervalos de caracteres medidos por una llamada al método MeasureCharacterRanges(String, Font, RectangleF, StringFormat).
Excepciones
Se establecen más de 32 intervalos de caracteres.
Ejemplos
El ejemplo siguiente está diseñado para su uso con Windows Forms y requiere PaintEventArgse
, que es un parámetro del controlador de eventos Paint. El código realiza las siguientes acciones:
Establece los intervalos de caracteres del StringFormat.
Mide los intervalos de caracteres de una cadena determinada y un rectángulo de diseño.
Dibuja la cadena y el rectángulo de diseño.
Pinta las regiones. Cada Region especifica un área ocupada por un intervalo de caracteres. Los valores de las regiones se establecen cuando el método MeasureCharacterRanges mide los intervalos de caracteres.
Repite los cuatro primeros pasos, pero incluye espacios finales en la medida de cada intervalo de caracteres.
Borra las marcas de formato del StringFormat para que los espacios finales no se incluyan en la medida de cada intervalo de caracteres.
Repite los cuatro primeros pasos, pero usa un rectángulo de diseño diferente solo para demostrar que el rectángulo de diseño afecta a las medidas de los intervalos de caracteres. El tamaño de la fuente también afectará a la medida.
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
Comentarios
No se permite establecer más de 32 intervalos de caracteres y provocará un System.OverflowException.