Udostępnij za pośrednictwem


Graphics.MeasureCharacterRanges Metoda

Definicja

Przeciążenia

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

Pobiera tablicę obiektów Region, z których każda jest powiązana z zakresem pozycji znaków w określonym ciągu.

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

Pobiera tablicę obiektów Region, z których każda jest powiązana z zakresem pozycji znaków w określonym ciągu.

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

Źródło:
Graphics.cs

Pobiera tablicę obiektów Region, z których każda jest powiązana z zakresem pozycji znaków w określonym ciągu.

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

Parametry

text
ReadOnlySpan<Char>

Ciąg do zmierzenia.

font
Font

Font definiujące format tekstowy ciągu.

layoutRect
RectangleF

RectangleF struktura określająca prostokąt układu dla ciągu.

stringFormat
StringFormat

StringFormat reprezentujące informacje o formatowaniu, takie jak odstępy między wierszami, dla ciągu.

Zwraca

Region[]

Ta metoda zwraca tablicę obiektów Region, z których każda jest powiązana z zakresem pozycji znaków w określonym ciągu.

Dotyczy

MeasureCharacterRanges(String, Font, RectangleF, StringFormat)

Źródło:
Graphics.cs
Źródło:
Graphics.cs

Pobiera tablicę obiektów Region, z których każda jest powiązana z zakresem pozycji znaków w określonym ciągu.

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

Parametry

text
String

Ciąg do zmierzenia.

font
Font

Font definiujące format tekstowy ciągu.

layoutRect
RectangleF

RectangleF struktura określająca prostokąt układu dla ciągu.

stringFormat
StringFormat

StringFormat reprezentujące informacje o formatowaniu, takie jak odstępy między wierszami, dla ciągu.

Zwraca

Region[]

Ta metoda zwraca tablicę obiektów Region, z których każda jest powiązana z zakresem pozycji znaków w określonym ciągu.

Wyjątki

font jest null.

Przykłady

Poniższy przykład kodu jest przeznaczony do użycia z formularzami Systemu Windows i wymaga PaintEventArgse, który jest parametrem programu obsługi zdarzeń Paint. Kod wykonuje następujące akcje:

  • Ustawia ciąg "Pierwsze i drugie zakresy" i czcionkę do wyświetlania ciągu ("Times New Roman", 16 punktów).

  • Ustawia dwa zakresy znaków w ciągu (które odpowiadają wyrazom "Pierwszy" i "Drugi").

  • Tworzy prostokąt, w którym ma być wyświetlany ciąg.

  • Ustawia formatowanie ciągu 3/4, w tym dwa zakresy znaków.

  • Rysuje ciąg na ekranie.

  • Mierzy zakresy znaków, określa prostokąty, które są powiązane z dwoma określonymi zakresami.

  • Rysuje dwa prostokąty na ekranie.

Wynikiem jest wyświetlany ciąg z pierwszym zakresem ("Pierwszy") powiązanym czerwonym prostokątem i drugim zakresem ("Drugi") powiązanym z niebieskim prostokątem.

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

Uwagi

Regiony zwracane przez tę metodę są zależne od rozdzielczości, więc może wystąpić niewielka utrata dokładności, jeśli ciągi są rejestrowane w metapliku w jednej rozdzielczości, a później odtwarzane w innej rozdzielczości.

Zobacz też

Dotyczy