Vykreslení pomocí Direct2D
Direct2D poskytuje metody pro vykreslení textu s formátováním, které popisuje pouze IDWriteTextFormat nebo IDWriteTextLayout na povrch Direct2D.
Vykreslování textu popsaného uživatelem IDWriteTextFormat
Chcete-li vykreslit řetězec pomocí objektu IDWriteTextFormat popisujícího formátování celého řetězce, použijte metodu ID2D1RenderTarget::DrawText poskytovanou Direct2D.
Definujte oblast rozložení textu načtením dimenzí vykreslovací oblasti a vytvořte direct2D obdélník se stejnými rozměry.
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_ );
K vykreslení textu na obrazovku použijte metodu ID2D1RenderTarget::DrawText a objekt IDWriteTextFormat. Metoda ID2D1RenderTarget::DrawText přijímá následující parametry:
- Řetězec, který se má vykreslit.
- Ukazatel na rozhraní IDWriteTextFormat.
- Obdélník rozložení Direct2D.
- Ukazatel na rozhraní, které zveřejňuje ID2D1Brush.
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. );
Vykreslení objektu rozložení IDWriteText
Chcete-li vykreslit text s nastavením rozložení textu určeným objektem IDWriteTextLayout, změňte kód v metodě MultiformattedText::DrawText, aby použil IDWriteTextLayout::DrawTextLayout.
Declare D2D1_POINT_2F proměnnou a nastavte ji na levý horní bod okna.
D2D1_POINT_2F origin = D2D1::Point2F( static_cast<FLOAT>(rc.left / dpiScaleX_), static_cast<FLOAT>(rc.top / dpiScaleY_) );
Nakreslete text na obrazovku zavoláním ID2D1RenderTarget::DrawTextLayout metody Direct2D cílového objektu vykreslování a předáním ukazatele IDWriteTextLayout.
pRT_->DrawTextLayout( origin, pTextLayout_, pBlackBrush_ );