Partager via


Rendu à l’aide de Direct2D

Direct2D fournit des méthodes permettant de rendre du texte avec une mise en forme décrite uniquement par un IDWriteTextFormat ou un IDWriteTextLayout sur une surface Direct2D.

Rendu du texte décrit par IDWriteTextFormat

Pour restituer une chaîne à l’aide d’un objet IDWriteTextFormat afin de décrire la mise en forme de la chaîne entière, utilisez la méthode ID2D1RenderTarget::D rawText fournie par Direct2D.

  1. Définissez la zone pour la disposition de texte en récupérant les dimensions de la zone de rendu et créez un rectangle Direct2D qui a les mêmes dimensions.

    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_
        );
    
    
  2. Utilisez la méthode ID2D1RenderTarget::D rawText et l’objet IDWriteTextFormat pour afficher le texte à l’écran. La méthode ID2D1RenderTarget::D rawText prend les paramètres suivants :

    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.
        );
    
    

Rendu d’un objet de disposition IDWriteText

Pour dessiner le texte avec les paramètres de disposition de texte spécifiés par l’objet IDWriteTextLayout , modifiez le code de la méthode MultiformattedText::D rawText pour utiliser IDWriteTextLayout::D rawTextLayout.

  1. Delcare D2D1_POINT_2F variable et définissez-la sur le point supérieur gauche de la fenêtre.

    D2D1_POINT_2F origin = D2D1::Point2F(
        static_cast<FLOAT>(rc.left / dpiScaleX_),
        static_cast<FLOAT>(rc.top / dpiScaleY_)
        );
    
    
  2. Dessinez le texte à l’écran en appelant la méthode ID2D1RenderTarget::D rawTextLayout de la cible de rendu Direct2D et en passant le pointeur IDWriteTextLayout .

    pRT_->DrawTextLayout(
        origin,
        pTextLayout_,
        pBlackBrush_
        );