Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DirectWrite zapewnia ścieżkę migracji z modelu czcionek GDI oraz pewne współdziałanie z nim, a także interfejsy do renderowania tekstu na mapie bitowej, które następnie można wyświetlić w oknie.
To omówienie zawiera następujące części:
Wprowadzenie
DirectWrite udostępnia metody konwertowania między strukturą LOGFONT GDI a interfejsami czcionek DirectWrite. Dzięki temu można używać GDI do niektórych lub wszystkich wyliczeń i wyboru czcionki, korzystając z ulepszonych funkcji i wydajności DirectWrite. DirectWrite ma również interfejs do renderowania na bitmapie, jeśli chcesz wyświetlić tekst na powierzchni GDI.
Część 1: IDWriteGdiInterop
Interfejs IDWriteGdiInterop jest używany do konwertowania między strukturami czcionek GDI i interfejsami czcionek DirectWrite, a także do utworzenia obiektu IDWriteBitmapRenderTarget. Pobierz obiekt IDWriteGdiInterop przy użyciu metody IDWriteFactory::GetGdiInterop, jak pokazano w poniższym kodzie.
// Create a GDI interop interface.
if (SUCCEEDED(hr))
{
hr = g_pDWriteFactory->GetGdiInterop(&g_pGdiInterop);
}
Część 2. Obiekty czcionek
GDI używa struktury LOGFONT do przechowywania informacji o czcionki i stylu tekstu. Metoda IDWriteGdiInterop::CreateFontFromLOGFONT przekonwertuje strukturę LOGFONT na obiekt IDWriteFont, jak pokazano w poniższym kodzie.
// Convert to a DirectWrite font.
if (SUCCEEDED(hr))
{
hr = g_pGdiInterop->CreateFontFromLOGFONT(&lf, &pFont);
}
Jednak IDWriteFont nie zawiera wszystkich informacji, które zawiera LOGFONT. Struktura LOGFONT zawiera rozmiar czcionki, grubość, styl, podkreślenie, przekreślenie, nazwę kroju czcionki oraz inne pokrewne informacje. pl-PL: IDWriteFont obiekty zawierają informacje o czcionce i jej wadze oraz stylu, ale nie rozmiar czcionki, podkreślenie itd. W przypadku DirectWriteformatowanie elementów informacji, takich jak te, jest hermetyzowane przez obiekt IDWriteTextFormat lub w przypadku określonych zakresów tekstu obiekt IDWriteTextLayout.
Istnieje możliwość przekonwertowania IDWriteFont na logFONT przy użyciu IDWriteGdiInterop::ConvertFontToLOGFONT.
Część 3. Renderowanie
Aby renderować tekst DirectWrite na powierzchniĘ GDI, należy użyć niestandardowego modułu renderowania tekstu. Zobacz temat Render to a GDI Surface (Renderowanie na powierzchni GDI).