StringFormat.SetMeasurableCharacterRanges(CharacterRange[]) Metodo

Definizione

Specifica una matrice di strutture CharacterRange che rappresentano gli intervalli di caratteri misurati da una chiamata al metodo MeasureCharacterRanges(String, Font, RectangleF, StringFormat).

C#
public void SetMeasurableCharacterRanges(System.Drawing.CharacterRange[] ranges);

Parametri

ranges
CharacterRange[]

Matrice di strutture CharacterRange che specifica gli intervalli di caratteri misurati da una chiamata al metodo MeasureCharacterRanges(String, Font, RectangleF, StringFormat).

Eccezioni

Sono impostati più di 32 intervalli di caratteri.

Esempio

L'esempio seguente è progettato per l'uso con Windows Form e richiede PaintEventArgse, che è un parametro del gestore eventi Paint. Il codice esegue le azioni seguenti:

  • Imposta gli intervalli di caratteri del StringFormat.

  • Misura gli intervalli di caratteri per una determinata stringa e rettangolo di layout.

  • Disegna la stringa e il rettangolo di layout.

  • Disegna le aree. Ogni Region specifica un'area occupata da un intervallo di caratteri. I valori nelle aree vengono impostati quando gli intervalli di caratteri vengono misurati dal metodo MeasureCharacterRanges.

  • Ripete i primi quattro passaggi, ma include spazi finali nella misura di ogni intervallo di caratteri.

  • Cancella i flag di formato del StringFormat in modo che gli spazi finali non siano inclusi nella misura di ogni intervallo di caratteri.

  • Ripete i primi quattro passaggi, ma usa un rettangolo di layout diverso solo per dimostrare che il rettangolo di layout influisce sulle misurazioni degli intervalli di caratteri. La dimensione del tipo di carattere influirà anche sulla misurazione.

C#
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]);   
}

Commenti

L'impostazione di più di 32 intervalli di caratteri non è consentita e causerà un System.OverflowException.

Si applica a

Prodotto Versioni
.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