Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Direct2D bietet Methoden zum Rendern von Text mit nur durch ein IDWriteTextFormat oder einem IDWriteTextLayout beschriebenen Format auf einer Direct2D-Oberfläche.
Rendern von Text, der von IDWriteTextFormat beschrieben wird
Um eine Zeichenfolge mithilfe eines IDWriteTextFormat-Objekts zur Beschreibung der Formatierung für die gesamte Zeichenfolge zu rendern, verwenden Sie die id2D1RenderTarget::D rawText-Methode , die von Direct2D bereitgestellt wird.
Definieren Sie den Bereich für das Textlayout, indem Sie die Abmessungen des Renderingbereichs abrufen, und erstellen Sie ein Direct2D-Rechteck mit den gleichen Dimensionen.
D2D1_RECT_F layoutRect = D2D1::RectF( static_cast<FLOAT>(rc.left) / dpiScaleX_, static_cast<FLOAT>(rc.top) / dpiScaleY_, static_cast<FLOAT>(rc.right - rc.left) / dpiScaleX_, static_cast<FLOAT>(rc.bottom - rc.top) / dpiScaleY_ );Verwenden Sie die ID2D1RenderTarget::D rawText-Methode und das IDWriteTextFormat-Objekt , um Text auf dem Bildschirm zu rendern. Die ID2D1RenderTarget::D rawText-Methode verwendet die folgenden Parameter:
- Eine zu renderde Zeichenfolge.
- Ein Zeiger auf eine IDWriteTextFormat-Schnittstelle .
- Ein Direct2D-Layoutrechteck .
- Ein Zeiger auf eine Schnittstelle, die ID2D1Brush verfügbar macht.
pRT_->DrawText( wszText_, // The string to render. cTextLength_, // The string's length. pTextFormat_, // The text format. layoutRect, // The region of the window where the text will be rendered. pBlackBrush_ // The brush used to draw the text. );
Rendern eines IDWriteText-Layoutobjekts
Um den Text mit den textlayout-Einstellungen zu zeichnen, die vom IDWriteTextLayout-Objekt angegeben werden, ändern Sie den Code in der MultiformattedText::D rawText-Methode, um IDWriteTextLayout::D rawTextLayout zu verwenden.
Entsorgen Sie eine D2D1_POINT_2F Variable, und legen Sie sie auf den oberen linken Punkt des Fensters fest.
D2D1_POINT_2F origin = D2D1::Point2F( static_cast<FLOAT>(rc.left / dpiScaleX_), static_cast<FLOAT>(rc.top / dpiScaleY_) );Zeichnen Sie den Text auf den Bildschirm, indem Sie die ID2D1RenderTarget::D rawTextLayout-Methode des Direct2D-Renderziels aufrufen und den Zeiger IDWriteTextLayout übergeben.
pRT_->DrawTextLayout( origin, pTextLayout_, pBlackBrush_ );