(0) exportieren Drucken
Alle erweitern

Interoperabilität mit GDI

DirectWrite stellt einen Migrationspfad (sowie gewisse Interoperabilität) für das Schriftmodell von GDI bereit, und drüber hinaus auch Schnittstellen zum Rendern von Text in eine Bitmap, die dann in einem Fenster gezeichnet werden kann.

Diese Übersicht umfasst die folgenden Abschnitte:

Einführung

DirectWrite stellt Methoden zum Konvertieren zwischen der LOGFONT-Struktur von GDI und DirectWrite-Schriftschnittstellen bereit. Dies ermöglicht Ihnen, GDI für einige oder die gesamte Schriftaufzählung und -auswahl zu verwenden, während Sie gleichzeitig die verbesserten Funktionen und die verbesserte Leistung von DirectWrite nutzen können. DirectWrite verfügt auch über Schnittstellen zum Rendern in eine Bitmap, wenn Sie Text in einer GDI-Oberfläche anzeigen möchten.

Teil 1: IDWriteGdiInterop

Die IDWriteGdiInterop-Schnittstelle wird für die Konvertierung zwischen GDI-Schriftstrukturen und DirectWrite-Schriftartschnittstellen verwendet sowie zum Erstellen eines IDWriteBitmapRenderTarget-Objekts. Rufen Sie ein IDWriteGdiInterop-Objekt mit der IDWriteFactory::GetGdiInterop-Methode ab, wie im folgenden Code dargestellt.


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


Teil 2: Schriftartobjekte

GDI speichert Informationen zur Schriftart und dem Format des Texts mithilfe der LOGFONT-Struktur. Die IDWriteGdiInterop::CreateFontFromLOGFONT-Methode konvertiert eine LOGFONT-Struktur in ein IDWriteFont-Objekt, wie im folgenden Code dargestellt.


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


IDWriteFont kapselt jedoch nicht all die gleichen Informationen wie LOGFONT. Eine LOGFONT-Struktur enthält den Schriftgrad, den Schnitt, das Format, Unterstreichung, Durchstreichung, Schriftartname sowie andere Informationen. IDWriteFont-Objekte enthalten Informationen zu einer Schriftart, zu ihrem Schnitt und ihrem Format, jedoch nicht über den Schriftgrad, Unterstreichung usw. Mit DirectWrite werden Formatierungsinformationen wie diese von einem IDWriteTextFormat-Objekt gekapselt oder, für bestimmte Bereiche des Texts, von einem IDWriteTextLayout-Objekt.

Sie haben die Möglichkeit, IDWriteFont in LOGFONT zu konvertieren, indem Sie IDWriteGdiInterop::ConvertFontToLOGFONT verwenden.

Teil 3: Rendern

Zum Rendern von DirectWrite-Text auf einer GDI-Oberfläche verwenden Sie einen benutzerdefinierten Textrenderer. Siehe Rendern auf einer GDI-Oberfläche.

Beispielcode

Ein Beispiel für die Konvertierung einer GDI-LOGFONT-Struktur in eine IDWriteFont und das Rendern von Text auf einer GDI-Oberfläche ist im Microsoft Windows Software Development Kit (SDK) enthalten. Informationen zum Beispiel finden Sie unter dem Beispiel für die GDI-Interoperabilität.

 

 

Anzeigen:
© 2014 Microsoft