Grafis::MeasureCharacterRanges metode (gdiplusgraphics.h)

Metode Graphics::MeasureCharacterRanges mendapatkan sekumpulan wilayah yang masing-masing terikat rentang posisi karakter dalam string.

Sintaks

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

Parameter

[in] string

Jenis: const WCHAR*

Penunjuk ke string karakter lebar.

Penting Untuk bahasa dua arah, seperti Bahasa Arab, panjang string tidak boleh melebihi 2046 karakter.
 

[in] length

Jenis: INT

Bilangan bulat yang menentukan jumlah karakter dalam array string . Jika parameter string menunjuk ke string yang dihentikan NULL, parameter ini dapat diatur ke –1.

[in] font

Jenis: font* const

Penunjuk ke objek Font yang menentukan karakteristik font (nama keluarga, ukuran, dan gaya font) untuk diterapkan ke string.

[in, ref] layoutRect

Jenis: const Rectf

Referensi ke persegi panjang yang mengikat string.

[in] stringFormat

Jenis: const StringFormat*

Penunjuk ke objek StringFormat yang menentukan rentang karakter dan informasi tata letak, seperti perataan, pemangkasan, perhentian tab, dan sebagainya.

[in] regionCount

Jenis: INT

Bilangan bulat yang menentukan jumlah wilayah yang diharapkan diterima ke dalam array wilayah . Angka ini harus sama dengan jumlah rentang karakter yang saat ini ada di objek StringFormat .

[out] regions

Jenis: Wilayah*

Penunjuk ke array objek Wilayah yang menerima wilayah, yang masing-masing mengikat rentang teks.

Menampilkan nilai

Jenis: Status

Jika metode berhasil, metode mengembalikan Ok, yang merupakan elemen dari enumerasi Status .

Jika metode gagal, metode mengembalikan salah satu elemen lain dari enumerasi Status .

Keterangan

Rentang karakter adalah rentang posisi karakter dalam string teks. Area tampilan yang ditempati oleh sekelompok karakter yang ditentukan oleh rentang karakter, adalah wilayah pembatas. Rentang karakter diatur oleh SetMeasurableCharacterRanges. Jumlah rentang yang saat ini ditetapkan dapat ditentukan dengan memanggil GetMeasurableCharacterRangeCount. Jumlah ini juga merupakan jumlah wilayah yang diharapkan diperoleh dengan metode MeasureCharacterRanges .

Contoh

Contoh berikut mendefinisikan tiga rentang posisi karakter dalam string dan mengatur rentang tersebut dalam objek StringFormat . Selanjutnya, metode MeasureCharacterRanges digunakan untuk mendapatkan tiga wilayah tampilan yang ditempati oleh karakter yang ditentukan oleh rentang. Ini dilakukan untuk tiga persegi panjang tata letak yang berbeda untuk menunjukkan bagaimana wilayah berubah sesuai dengan tata letak string. Selain itu, pada pengulangan ketiga ini, bendera format string diubah sehingga wilayah yang diukur akan menyertakan spasi berikutnya.

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;
}

Persyaratan

   
Klien minimum yang didukung Windows XP, Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header gdiplusgraphics.h (termasuk Gdiplus.h)
Pustaka Gdiplus.lib
DLL Gdiplus.dll

Lihat juga

CharacterRange

GetMeasurableCharacterRangeCount

Grafik

SetMeasurableCharacterRanges