Sdílet prostřednictvím


Spolupráce s GDI

DirectWrite poskytuje cestu migrace a určitou interoperabilitu s modelem písem GDI a také rozhraním pro vykreslení textu na rastrový obrázek, který se pak dá nakreslit v okně.

Tento přehled obsahuje následující části:

Úvod

DirectWrite poskytuje metody pro převod mezi strukturou LOGFONT GDI a rozhraními písem DirectWrite. To vám umožní používat GDI pro některé nebo všechny výčty a výběr písma a zároveň využívat vylepšené funkce a výkon DirectWrite. DirectWrite má také rozhraní pro vykreslení rastrového obrázku, pokud chcete zobrazit text na povrchu GDI.

Část 1: IDWriteGdiInterop

Rozhraní IDWriteGdiInterop slouží k převodu mezi strukturami písem GDI a rozhraními písem DirectWrite a také k vytvoření IDWriteBitmapRenderTarget objektu. Získejte objekt IDWriteGdiInterop pomocí metody IDWriteFactory::GetGdiInterop, jak je znázorněno v následujícím kódu.

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

Část 2: Objekty písma

GDI používá strukturu LOGFONT k ukládání informací o písmu a stylu textu. Metoda IDWriteGdiInterop::CreateFontFromLOGFONT převede strukturu LOGFONT na objekt IDWriteFont, jak je vidět v následujícím kódu.

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

IDWriteFont však nezahrnou všechny stejné informace, které dělá LOGFONT. Struktura LOGFONT obsahuje velikost písma, tloušťku, styl, podtržení, přeškrtnutí, název obličeje písma a některé další informace. idWriteFont objekty obsahují informace o písmu a jeho hmotnosti a stylu, ale ne o velikosti, podtržení atd. S DirectWritejsou prvky formátování informací, jako jsou tyto, zapouzdřeny v objektu IDWriteTextFormat nebo, pro konkrétní oblasti textu, v objektu IDWriteTextLayout.

Máte možnost převést IDWriteFont na LOGFONT pomocí IDWriteGdiInterop::ConvertFontToLOGFONT.

Část 3: Vykreslování

Pokud chcete vykreslit text DirectWrite na plochu GDI, použijete vlastní renderer textu. Podívejte se na téma Vykreslení na GDI Surface.