Graphics.MeasureCharacterRanges Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
MeasureCharacterRanges(ReadOnlySpan<Char>, Font, RectangleF, StringFormat) |
Získá pole Region objekty, z nichž každý ohraničuje rozsah pozic znaků v zadaném řetězci. |
MeasureCharacterRanges(String, Font, RectangleF, StringFormat) |
Získá pole Region objekty, z nichž každý ohraničuje rozsah pozic znaků v zadaném řetězci. |
MeasureCharacterRanges(ReadOnlySpan<Char>, Font, RectangleF, StringFormat)
- Zdroj:
- Graphics.cs
- Zdroj:
- Graphics.cs
- Zdroj:
- Graphics.cs
Získá pole Region objekty, z nichž každý ohraničuje rozsah pozic znaků v zadaném řetězci.
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>
Řetězec k měření.
- layoutRect
- RectangleF
RectangleF strukturu, která určuje obdélník rozložení řetězce.
- stringFormat
- StringFormat
StringFormat, který představuje informace o formátování, například řádkování, pro řetězec.
Návraty
Tato metoda vrátí pole Region objektů, z nichž každý ohraničuje rozsah pozic znaků v zadaném řetězci.
Platí pro
MeasureCharacterRanges(String, Font, RectangleF, StringFormat)
- Zdroj:
- Graphics.cs
- Zdroj:
- Graphics.cs
- Zdroj:
- Graphics.cs
- Zdroj:
- Graphics.cs
- Zdroj:
- Graphics.cs
Získá pole Region objekty, z nichž každý ohraničuje rozsah pozic znaků v zadaném řetězci.
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
Řetězec k měření.
- layoutRect
- RectangleF
RectangleF strukturu, která určuje obdélník rozložení řetězce.
- stringFormat
- StringFormat
StringFormat, který představuje informace o formátování, například řádkování, pro řetězec.
Návraty
Tato metoda vrátí pole Region objektů, z nichž každý ohraničuje rozsah pozic znaků v zadaném řetězci.
Výjimky
font
je null
.
Příklady
Následující příklad kódu je určený pro použití s Windows Forms a vyžaduje PaintEventArgse
, což je parametr obslužné rutiny události Paint. Kód provede následující akce:
Nastaví řetězec "První a druhý rozsah" a písmo pro zobrazení řetězce ("Times New Roman", 16 bodů).
Nastaví dvě rozsahy znaků v řetězci (které odpovídají slovům "První" a "Druhý").
Vytvoří obdélník, ve kterém se má řetězec zobrazit.
Nastaví formátování řetězce 3/4 včetně dvou oblastí znaků.
Nakreslí řetězec na obrazovku.
Měří rozsahy znaků a určuje obdélníky, které ohraničují dvě zadané oblasti.
Nakreslí dva obdélníky na obrazovku.
Výsledkem je zobrazený řetězec s první oblastí ("První") ohraničenou červeným obdélníkem a druhou oblastí ("Druhý") ohraničenou modrým obdélníkem.
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
Poznámky
Oblasti vrácené touto metodou jsou závislé na rozlišení, takže může dojít k mírné ztrátě přesnosti, pokud jsou řetězce zaznamenány v metasouboru v jednom rozlišení a později se přehrávají v jiném rozlišení.