GDI ile birlikte çalışma
DirectWrite, GDI'nin yazı tipi modelinden bir geçiş yolu ve bazı durumlarda birlikte çalışabilirlik sağlar; ayrıca, sonrasında bir pencere üzerine çizilebilen bit eşlemlerine metin işleme için arabirimler sunar.
Bu genel bakış aşağıdaki bölümleri içerir:
Giriş
DirectWrite, GDI'nın LOGFONT yapısı ile DirectWrite yazı tipi arabirimleri arasında dönüştürme yöntemleri sağlar. Bu, DirectWrite'in geliştirilmiş işlevselliğinden ve performansından yararlanırken, yazı tipi numaralandırmasının ve seçiminin bir kısmı veya tamamı için GDI kullanmanıza olanak tanır. Metni GDI yüzeyinde görüntülemek istiyorsanız DirectWrite'in bitmap üzerinde işleme arabirimleri de vardır.
Bölüm 1: IDWriteGdiInterop
IDWriteGdiInterop arabirimi, GDI yazı tipi yapıları ile DirectWrite yazı tipi arabirimleri arasında dönüştürme yapmak ve ayrıca bir IDWriteBitmapRenderTarget nesnesi oluşturmak için kullanılır. Aşağıdaki kodda gösterildiği gibi IDWriteFactory::GetGdiInterop yöntemini kullanarak bir IDWriteGdiInterop nesnesi alın.
// Create a GDI interop interface.
if (SUCCEEDED(hr))
{
hr = g_pDWriteFactory->GetGdiInterop(&g_pGdiInterop);
}
Bölüm 2: Yazı Tipi Nesneleri
GDI, metnin yazı tipi ve stili hakkındaki bilgileri depolamak için LOGFONT yapısını kullanır. IDWriteGdiInterop::CreateFontFromLOGFONT yöntemi, aşağıdaki kodda görüldüğü gibi LOGFONT yapısını IDWriteFont nesnesine dönüştürür.
// Convert to a DirectWrite font.
if (SUCCEEDED(hr))
{
hr = g_pGdiInterop->CreateFontFromLOGFONT(&lf, &pFont);
}
Ancak IDWriteFont, LOGFONT ile aynı bilgilerin tümünü kapsüllemez. LOGFONT yapısı, yazı tipi boyutunu, kalınlığını, stilini, altı çizili olup olmadığını, üstü çizili olup olmadığını, yazı tipi yüz adını ve diğer bazı bilgileri içerir. IDWriteFont nesneleri, yazı tipi ve kalınlık ve stili hakkında bilgi içerir, ancak yazı tipi boyutu, altı çizili vb. hakkında bilgi içermez. DirectWrite ile, biçimlendirme bilgileri gibi öğeler IDWriteTextFormat nesnesi veya belirli metin aralıkları için IDWriteTextLayout nesnesi tarafından saklanır.
IDWriteGdiInterop::ConvertFontToLOGFONTkullanarak IDWriteFont LOGFONT'a dönüştürme seçeneğiniz vardır.
Bölüm 3: İşleme
DirectWrite metnini GDI yüzeyine işlemek için özel bir metin işleyici kullanırsınız. GDI Yüzeyine İşleme konusuna bakın.