Graphics::MeasureCharacterRanges 메서드(gdiplusgraphics.h)

Graphics::MeasureCharacterRanges 메서드는 문자열 내의 문자 위치 범위를 경계로 하는 각 영역 집합을 가져옵니다.

구문

Status MeasureCharacterRanges(
  [in]      const WCHAR        *string,
  [in]      INT                length,
  [in]      const Font         *font,
  [in, ref] const RectF &      layoutRect,
  [in]      const StringFormat *stringFormat,
  [in]      INT                regionCount,
  [out]     Region             *regions
);

매개 변수

[in] string

형식: const WCHAR*

와이드 문자열에 대한 포인터입니다.

중요 아랍어와 같은 양방향 언어의 경우 문자열 길이가 2046자를 초과하면 안 됩니다.
 

[in] length

형식: INT

문자열 배열의 문자 수를 지정하는 정수입니다. 문자열 매개 변수가 NULL로 끝나는 문자열을 가리키는 경우 이 매개 변수를 –1로 설정할 수 있습니다.

[in] font

형식: const 글꼴*

문자열에 적용할 글꼴 특성(글꼴의 패밀리 이름, 크기 및 스타일)을 지정하는 Font 개체에 대한 포인터입니다.

[in, ref] layoutRect

형식: const Rectf

문자열을 경계로 하는 사각형에 대한 참조입니다.

[in] stringFormat

형식: const StringFormat*

맞춤, 트리밍, 탭 정지 등과 같은 문자 범위 및 레이아웃 정보를 지정하는 StringFormat 개체에 대한 포인터입니다.

[in] regionCount

형식: INT

지역 배열에 수신될 것으로 예상되는 지역 수를 지정하는 정 수입니다 . 이 숫자는 현재 StringFormat 개체에 있는 문자 범위의 수와 같아야 합니다.

[out] regions

형식: 지역*

영역을 수신하는 Region 개체의 배열에 대한 포인터이며, 각 개체는 텍스트 범위를 경계로 합니다.

반환 값

형식: 상태

메서드가 성공하면 Status 열거형의 요소인 확인을 반환합니다.

메서드가 실패하면 Status 열거형의 다른 요소 중 하나를 반환합니다.

설명

문자 범위는 텍스트 문자열 내의 문자 위치 범위입니다. 문자 범위로 지정된 문자 그룹이 차지하는 디스플레이 영역은 경계 영역입니다. 문자 범위는 SetMeasurableCharacterRanges에 의해 설정됩니다. 현재 설정된 범위 수는 GetMeasurableCharacterRangeCount를 호출하여 확인할 수 있습니다. 이 숫자는 MeasureCharacterRanges 메서드에서 가져올 것으로 예상되는 지역 수이기도 합니다.

예제

다음 예제에서는 문자열 내에서 세 개의 문자 위치 범위를 정의하고 StringFormat 개체에서 해당 범위를 설정합니다. 다음으로 , MeasureCharacterRanges 메서드를 사용하여 범위에 지정된 문자가 차지하는 디스플레이의 세 영역을 가져옵니다. 이 작업은 세 개의 다른 레이아웃 사각형에 대해 수행되어 문자열의 레이아웃에 따라 영역이 어떻게 변경되는지 보여 줍니다. 또한 세 번째 반복에서 측정된 영역에 후행 공백이 포함되도록 문자열 형식 플래그가 변경됩니다.

VOID MeasureCharRanges(HDC hdc)
{
   Graphics graphics(hdc);

   // Brushes and pens used for drawing and painting
   SolidBrush blueBrush(Color(255, 0, 0, 255));
   SolidBrush redBrush(Color(100, 255, 0, 0));
   Pen        blackPen(Color(255, 0, 0, 0));

   // Layout rectangles used for drawing strings
   RectF   layoutRect_A(20.0f, 20.0f, 130.0f, 130.0f);
   RectF   layoutRect_B(160.0f, 20.0f, 165.0f, 130.0f);
   RectF   layoutRect_C(335.0f, 20.0f, 165.0f, 130.0f);

   // Three different ranges of character positions within the string
   CharacterRange charRanges[3] = { CharacterRange(3, 5),
                                    CharacterRange(15, 2),
                                    CharacterRange(30, 15), };

   // Font and string format to apply to string when drawing
   Font         myFont(L"Times New Roman", 16.0f);
   StringFormat strFormat;

    // Other variables
   Region* pCharRangeRegions; // pointer to CharacterRange regions
   short   i;                 // loop counter
   INT     count;             // number of character ranges set
   WCHAR   string[] = L"The quick, brown fox easily jumps over the lazy dog.";


   // Set three ranges of character positions.
   strFormat.SetMeasurableCharacterRanges(3, charRanges);

   // Get the number of ranges that have been set, and allocate memory to 
   // store the regions that correspond to the ranges.
   count = strFormat.GetMeasurableCharacterRangeCount();
   pCharRangeRegions = new Region[count];

   // Get the regions that correspond to the ranges within the string when
   // layout rectangle A is used. Then draw the string, and show the regions.
   graphics.MeasureCharacterRanges(string, -1,
      &myFont, layoutRect_A, &strFormat, count, pCharRangeRegions);
   graphics.DrawString(string, -1,
      &myFont, layoutRect_A, &strFormat, &blueBrush);
   graphics.DrawRectangle(&blackPen, layoutRect_A);
   for ( i = 0; i < count; i++)
   {
      graphics.FillRegion(&redBrush, pCharRangeRegions + i);
   }

   // Get the regions that correspond to the ranges within the string when
   // layout rectangle B is used. Then draw the string, and show the regions.
   graphics.MeasureCharacterRanges(string, -1,
      &myFont, layoutRect_B, &strFormat, count, pCharRangeRegions);
   graphics.DrawString(string, -1,
      &myFont, layoutRect_B, &strFormat, &blueBrush);
   graphics.DrawRectangle(&blackPen, layoutRect_B);
   for ( i = 0; i < count; i++)
   {
      graphics.FillRegion(&redBrush, pCharRangeRegions + i);
   }

   // Get the regions that correspond to the ranges within the string when
   // layout rectangle C is used. Set trailing spaces to be included in the
   // regions. Then draw the string, and show the regions.
   strFormat.SetFormatFlags(StringFormatFlagsMeasureTrailingSpaces);
   graphics.MeasureCharacterRanges(string, -1,
      &myFont, layoutRect_C, &strFormat, count, pCharRangeRegions);
   graphics.DrawString(string, -1,
      &myFont, layoutRect_C, &strFormat, &blueBrush);
   graphics.DrawRectangle(&blackPen, layoutRect_C);
   for ( i = 0; i < count; i++)
   {
      graphics.FillRegion(&redBrush, pCharRangeRegions + i);
   }
   // Delete memory for the range regions.
   delete [] pCharRangeRegions;
}

요구 사항

   
지원되는 최소 클라이언트 Windows XP, Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 gdiplusgraphics.h(Gdiplus.h 포함)
라이브러리 Gdiplus.lib
DLL Gdiplus.dll

참고 항목

CharacterRange

GetMeasurableCharacterRangeCount

그래픽

SetMeasurableCharacterRanges