英語で読む

次の方法で共有


StringFormat.SetMeasurableCharacterRanges(CharacterRange[]) メソッド

定義

MeasureCharacterRanges(String, Font, RectangleF, StringFormat) メソッドの呼び出しによって測定される文字の範囲を表す CharacterRange 構造体の配列を指定します。

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

パラメーター

ranges
CharacterRange[]

MeasureCharacterRanges(String, Font, RectangleF, StringFormat) メソッドの呼び出しによって測定される文字の範囲を指定する CharacterRange 構造体の配列。

例外

32 を超える文字範囲が設定されています。

次の例は Windows フォームで使用できるように設計されており、PaintEventArgseが必要です。これは、Paint イベント ハンドラーのパラメーターです。 このコードは、次のアクションを実行します。

  • StringFormatの文字範囲を設定します。

  • 特定の文字列とレイアウトの四角形の文字範囲を測定します。

  • 文字列とレイアウトの四角形を描画します。

  • 領域を塗りつぶします。 各 Region は、文字の範囲によって占有される領域を指定します。 領域の値は、文字範囲が MeasureCharacterRanges メソッドによって測定されるときに設定されます。

  • 最初の 4 つの手順を繰り返しますが、各文字範囲の測定には末尾のスペースが含まれます。

  • 末尾のスペースが各文字範囲の測定に含まれないように、StringFormat の書式フラグをクリアします。

  • 最初の 4 つの手順を繰り返しますが、レイアウト四角形が文字範囲の測定値に影響することを示すために、異なるレイアウト四角形を使用します。 フォントのサイズも測定に影響します。

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

注釈

32 文字を超える範囲を設定することは許可されず、System.OverflowExceptionが発生します。

適用対象

製品 バージョン
.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