Bagikan melalui


Graphics.MeasureCharacterRanges Metode

Definisi

Overload

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

Mendapatkan array objek Region, yang masing-masing mengikat rentang posisi karakter dalam string yang ditentukan.

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

Mendapatkan array objek Region, yang masing-masing mengikat rentang posisi karakter dalam string yang ditentukan.

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

Sumber:
Graphics.cs
Sumber:
Graphics.cs

Mendapatkan array objek Region, yang masing-masing mengikat rentang posisi karakter dalam string yang ditentukan.

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()

Parameter

text
ReadOnlySpan<Char>

String untuk diukur.

font
Font

Font yang menentukan format teks string.

layoutRect
RectangleF

RectangleF struktur yang menentukan persegi tata letak untuk string.

stringFormat
StringFormat

StringFormat yang mewakili informasi pemformatan, seperti penspasian baris, untuk string.

Mengembalikan

Region[]

Metode ini mengembalikan array objek Region, yang masing-masing mengikat rentang posisi karakter dalam string yang ditentukan.

Berlaku untuk

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

Sumber:
Graphics.cs
Sumber:
Graphics.cs
Sumber:
Graphics.cs

Mendapatkan array objek Region, yang masing-masing mengikat rentang posisi karakter dalam string yang ditentukan.

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()

Parameter

text
String

String untuk diukur.

font
Font

Font yang menentukan format teks string.

layoutRect
RectangleF

RectangleF struktur yang menentukan persegi tata letak untuk string.

stringFormat
StringFormat

StringFormat yang mewakili informasi pemformatan, seperti penspasian baris, untuk string.

Mengembalikan

Region[]

Metode ini mengembalikan array objek Region, yang masing-masing mengikat rentang posisi karakter dalam string yang ditentukan.

Pengecualian

Contoh

Contoh kode berikut dirancang untuk digunakan dengan Windows Forms, dan memerlukan PaintEventArgse, yang merupakan parameter penanganan aktivitas Paint. Kode melakukan tindakan berikut:

  • Mengatur string "Rentang pertama dan kedua" dan font untuk tampilan string ("Times New Roman", 16 poin).

  • Mengatur dua rentang karakter dalam string (yang sesuai dengan kata "Pertama" dan "Kedua").

  • Membuat persegi untuk menampilkan string.

  • Mengatur pemformatan string 3/4 termasuk dua rentang karakter.

  • Menggambar string ke layar.

  • Mengukur rentang karakter, menentukan persegi panjang yang mengikat dua rentang yang ditentukan.

  • Menggambar dua persegi panjang ke layar.

Hasilnya adalah string yang ditampilkan dengan rentang pertama ("Pertama") yang dibatasi oleh persegi panjang merah dan rentang kedua ("Kedua") yang dibatasi oleh persegi panjang biru.

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

Keterangan

Wilayah yang dikembalikan oleh metode ini bergantung pada resolusi, sehingga mungkin ada sedikit hilangnya akurasi jika string dicatat dalam metafile pada satu resolusi dan kemudian diputar kembali pada resolusi yang berbeda.

Lihat juga

Berlaku untuk