Megosztás a következőn keresztül:


Renderelés Direct2D használatával

A Direct2D olyan metódusokat biztosít, amelyekkel szöveget jeleníthet meg egy Direct2D felületen, a formázást pedig csak egy IDWriteTextFormat vagy egy IDWriteTextLayout határozza meg.

Az IDWriteTextFormat által leírt szöveg renderelése

Ha egy sztringet meg szeretne jeleníteni a teljes sztring formázásának leírásához az IDWriteTextFormat objektummal, használja az ID2D1RenderTarget::DrawText metódust, amelyet a Direct2Dbiztosít.

  1. Definiálja a szövegelrendezés területét a renderelési terület dimenzióinak beolvasásával, és hozzon létre egy Direct2D téglalapot, amely ugyanazokkal a dimenziókkal rendelkezik.

    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. A ID2D1RenderTarget::DrawText metódus és az IDWriteTextFormat objektum használatával szöveget rajzolhat a képernyőre. Az ID2D1RenderTarget::DrawText metódus a következő paramétereket veszi fel:

    • Megjelenítendő karakterlánc.
    • Mutató az IDWriteTextFormat interfészre.
    • Direct2D elrendezési téglalap.
    • Egy olyan mutató, amely egy felületet mutat, ami elérhetővé teszi a ID2D1Brushelemeket.
    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.
        );
    
    

Az IDWriteText kiosztási objektum renderelése

Ha meg szeretné rajzolni a szöveget az IDWriteTextLayout objektum által megadott szövegelrendezési beállításokkal, módosítsa a kódot a MultiformattedText::DrawText metódusban IDWriteTextLayout::DrawTextLayout.

  1. Adj meg egy D2D1_POINT_2F változót, és állítsd be az ablak bal felső pontjára.

    D2D1_POINT_2F origin = D2D1::Point2F(
        static_cast<FLOAT>(rc.left / dpiScaleX_),
        static_cast<FLOAT>(rc.top / dpiScaleY_)
        );
    
    
  2. Rajzolja a szöveget a képernyőre az ID2D1RenderTarget::DrawTextLayout metódus meghívásával a Direct2D renderelési célfelülethez, és adja át az IDWriteTextLayout mutatót.

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