Bagikan melalui


Berinteroperasi 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:

Perkenalan

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

Bagian 1: IDWriteGdiInterop

AntarmukaIDWriteGdiInterop digunakan untuk mengonversi antara struktur font GDI dan antarmuka font DirectWrite, dan juga untuk membuat objekIDWriteBitmapRenderTarget. 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 menjadi objekIDWriteFont, 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 seperti 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 serta bobot dan gayanya, tetapi bukan ukuran font, garis bawah, dan lain-lain. Dengan DirectWrite, memformat elemen informasi seperti ini dienkapsulasi oleh objekIDWriteTextFormat atau, untuk rentang teks tertentu, objek IDWriteTextLayout.

Anda memiliki opsi untuk mengonversiIDWriteFontke LOGFONT dengan menggunakan IDWriteGdiInterop::ConvertFontToLOGFONT.

Bagian 3: Penyajian

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