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.
[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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk