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