Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
DirectWrite menyediakan dua antarmuka untuk memformat teks: IDWriteTextFormat dan IDWriteTextLayout. IDWriteTextFormat hanya menjelaskan format untuk teks dan digunakan dalam kasus ketika seluruh string adalah menjadi ukuran font, gaya, berat, dan sebagainya yang sama. Di sisi lain, IDWriteTextLayout merangkum string teks dan pemformatan untuk rentang string yang ditentukan. Dokumen ini menjelaskan setiap antarmuka dan penggunaannya. Untuk informasi selengkapnya tentang pembuatan dan metode antarmuka ini, lihat halaman referensi IDWriteTextFormat dan IDWriteTextLayout.
Dokumen ini berisi bagian-bagian berikut:
-
IDWriteTextFormat
- Memodifikasi IDWriteTextFormat
- IDWriteTextLayout
IDWriteTextFormat
ObjekIDWriteTextFormatdigunakan untuk:
- Jelaskan format untuk seluruh string saat penyajian. Untuk merender string dengan beberapa format, gunakan objekIDWriteTextLayout.
- Tentukan format teks default saat membuat objekIDWriteTextLayout.
Untuk membuat objekIDWriteTextFormat, Anda menggunakan metode IDWriteFactory::CreateTextFormat dan tentukan keluarga font, koleksi font, bobot font, ukuran font (dalam DIP), nama lokal.
Memodifikasi IDWriteTextFormat
Setelah antarmuka IDWriteTextFormat dibuat, beberapa nilai tidak dapat diubah: keluarga font, koleksi, berat, dan ukuran, serta nama lokal. Untuk mengubah nilai-nilai ini, objek IDWriteTextFormat baru harus dibuat.
IDWriteTextLayout memungkinkan Anda mengubah properti di atas tanpa membuat ulang apa pun. IDWriteTextFormat memungkinkan Anda membuat perubahan format yang berlaku untuk seluruh teks, seperti perataan teks. Jika Anda ingin menerapkan pemformatan ke rentang karakter tertentu, Anda harus melakukannya dengan menggunakan IDWriteTextLayout.
IDWriteTextFormat menyediakan metode untuk mengatur perataan teks, arah alur, perhentian tab bertahap, penspasian baris, perataan paragraf, pemangkasan, dan pembungkusan kata. Properti ini dapat diubah kapan saja setelah pembuatan objek IDWriteTextFormat.
IDWriteTextLayout
AntarmukaIDWriteTextLayout, tidak seperti IDWriteTextFormat, mewakili blok teks dan pemformatan terkait. IDWriteTextFormat mewakili informasi pemformatan awal. Contoh berikut menunjukkan cara membuat objek IDWriteTextLayout menggunakan IDWriteFactory::CreateTextLayout.
// Create a text layout using the text format.
if (SUCCEEDED(hr))
{
RECT rect;
GetClientRect(hwnd_, &rect);
float width = rect.right / dpiScaleX_;
float height = rect.bottom / dpiScaleY_;
hr = pDWriteFactory_->CreateTextLayout(
wszText_, // The string to be laid out and formatted.
cTextLength_, // The length of the string.
pTextFormat_, // The text format to apply to the string (contains font information, etc).
width, // The width of the layout box.
height, // The height of the layout box.
&pTextLayout_ // The IDWriteTextLayout interface pointer.
);
}
Teks dalam objek IDWriteTextLayout tidak dapat diubah setelah objek dibuat. Untuk mengubah teks, Anda harus menghapus objek yang ada dan membuat objek IDWriteTextLayout baru.
Anda dapat menggunakanIDWriteTextLayoutuntuk memformat rentang teks yang ditentukan. IDWriteTextLayout juga menyediakan metode untuk mengubah gaya dan berat font, serta menambahkan fitur font OpenType dan menekan pengujian. Untuk informasi selengkapnya dan daftar lengkap metode, lihat halaman referensi IDWriteTextLayout.
Memformat rentang teks
IDWriteTextLayout menyediakan beberapa metode untuk memformat rentang teks. Masing-masing metode ini mengambil struktur DWRITE_TEXT_RANGE sebagai parameter untuk menentukan posisi teks awal dalam string dan panjang rentang yang akan diformat. Contoh berikut menunjukkan cara mengatur bobot font rentang teks menjadi tebal.
// Set the font weight to bold for the first 5 letters.
DWRITE_TEXT_RANGE textRange = {0, 5};
if (SUCCEEDED(hr))
{
hr = pTextLayout_->SetFontWeight(DWRITE_FONT_WEIGHT_BOLD, textRange);
}
Opsi Penyajian
Teks dengan pemformatan yang dijelaskan hanya oleh objekIDWriteTextFormatdapat dirender dengan Direct2D , namun, ada beberapa opsi lagi untuk merender objekIDWriteTextLayout.
String yang dijelaskan oleh objekIDWriteTextLayoutdapat dirender menggunakan metode di bawah ini.