Bagikan melalui


Mengoperasikan dengan GDI

DirectWrite menyediakan jalur migrasi dari, dan beberapa interoperabilitas dengan, model font GDI, serta antarmuka untuk merender teks ke bitmap yang kemudian dapat digambar di jendela.

Gambaran umum ini berisi bagian-bagian berikut:

Pengantar

DirectWrite menyediakan metode untuk mengonversi antara struktur LOGFONT GDI dan antarmuka font DirectWrite. Ini memungkinkan Anda menggunakan GDI untuk beberapa atau semua enumerasi dan pilihan font, sambil memanfaatkan fungsionalitas dan performa DirectWrite yang ditingkatkan. DirectWrite juga memiliki antarmuka untuk merender ke bitmap jika Anda ingin menampilkan teks pada permukaan GDI.

Bagian 1: IDWriteGdiInterop

Antarmuka IDWriteGdiInterop digunakan untuk mengonversi antara struktur font GDI dan antarmuka font DirectWrite, dan juga untuk membuat objek IDWriteBitmapRenderTarget. Dapatkan objek IDWriteGdiInterop dengan menggunakan metode IDWriteFactory::GetGdiInterop , seperti yang ditunjukkan dalam kode berikut.

// Create a GDI interop interface.
if (SUCCEEDED(hr))
{
    hr = g_pDWriteFactory->GetGdiInterop(&g_pGdiInterop);
}

Bagian 2: Objek Font

GDI menggunakan struktur LOGFONT untuk menyimpan informasi tentang font dan gaya teks. Metode IDWriteGdiInterop::CreateFontFromLOGFONT akan mengonversi struktur LOGFONT ke objek IDWriteFont , seperti yang terlihat dalam kode berikut.

// Convert to a DirectWrite font.
if (SUCCEEDED(hr))
{
    hr = g_pGdiInterop->CreateFontFromLOGFONT(&lf, &pFont);
}

Namun, IDWriteFont tidak merangkum semua informasi yang sama dengan yang dilakukan LOGFONT. Struktur LOGFONT berisi ukuran font, berat, gaya, garis bawah, coretan, nama wajah font, dan beberapa informasi lainnya. Objek IDWriteFont berisi informasi tentang font dan bobot dan gayanya, tetapi bukan ukuran font, garis bawah, dan sebagainya. Dengan DirectWrite, elemen informasi pemformatan seperti ini dienkapulatasi oleh objek IDWriteTextFormat atau, untuk rentang teks tertentu, objek IDWriteTextLayout.

Anda memiliki opsi untuk mengonversi IDWriteFont ke LOGFONT dengan menggunakan IDWriteGdiInterop::ConvertFontToLOGFONT.

Bagian 3: Penyajian

Untuk merender teks DirectWrite ke permukaan GDI, Anda menggunakan perender teks kustom. Lihat topik Render to a GDI Surface .