Graphics.MeasureCharacterRanges 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
MeasureCharacterRanges(ReadOnlySpan<Char>, Font, RectangleF, StringFormat) |
각각 지정된 문자열 내의 문자 위치 범위를 경계하는 Region 개체의 배열을 가져옵니다. |
MeasureCharacterRanges(String, Font, RectangleF, StringFormat) |
각각 지정된 문자열 내의 문자 위치 범위를 경계하는 Region 개체의 배열을 가져옵니다. |
MeasureCharacterRanges(ReadOnlySpan<Char>, Font, RectangleF, StringFormat)
- Source:
- Graphics.cs
각각 지정된 문자열 내의 문자 위치 범위를 경계하는 Region 개체의 배열을 가져옵니다.
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()
매개 변수
- text
- ReadOnlySpan<Char>
측정할 문자열입니다.
- layoutRect
- RectangleF
문자열의 레이아웃 사각형을 지정하는 RectangleF 구조체입니다.
- stringFormat
- StringFormat
문자열에 대한 줄 간격과 같은 서식 정보를 나타내는 StringFormat.
반환
이 메서드는 각각 지정된 문자열 내의 문자 위치 범위를 경계하는 Region 개체의 배열을 반환합니다.
적용 대상
MeasureCharacterRanges(String, Font, RectangleF, StringFormat)
- Source:
- Graphics.cs
- Source:
- Graphics.cs
각각 지정된 문자열 내의 문자 위치 범위를 경계하는 Region 개체의 배열을 가져옵니다.
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()
매개 변수
- text
- String
측정할 문자열입니다.
- layoutRect
- RectangleF
문자열의 레이아웃 사각형을 지정하는 RectangleF 구조체입니다.
- stringFormat
- StringFormat
문자열에 대한 줄 간격과 같은 서식 정보를 나타내는 StringFormat.
반환
이 메서드는 각각 지정된 문자열 내의 문자 위치 범위를 경계하는 Region 개체의 배열을 반환합니다.
예외
font
null
.
예제
다음 코드 예제는 Windows Forms에서 사용하도록 설계되었으며 Paint 이벤트 처리기의 매개 변수인 PaintEventArgse
필요합니다. 코드는 다음 작업을 수행합니다.
문자열 "첫 번째 및 두 번째 범위"와 문자열 표시 글꼴을 설정합니다("Times New Roman", 16포인트).
문자열 내에 두 개의 문자 범위를 설정합니다("First" 및 "Second"라는 단어에 해당).
문자열을 표시할 사각형을 만듭니다.
두 문자 범위를 포함하여 문자열 3/4의 서식을 설정합니다.
화면에 문자열을 그립니다.
문자 범위를 측정하고 지정된 두 범위를 바인딩하는 사각형을 결정합니다.
화면에 두 사각형을 그립니다.
그 결과 첫 번째 범위("First")가 빨간색 사각형으로 바인딩되고 두 번째 범위("Second")가 파란색 사각형으로 바인딩된 표시된 문자열이 생성됩니다.
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
설명
이 메서드에서 반환된 영역은 해상도에 따라 달라지므로 문자열이 한 해상도에서 메타파일로 기록되고 나중에 다른 해상도로 재생되는 경우 약간의 정확도 손실이 발생할 수 있습니다.
추가 정보
적용 대상
.NET