Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Direct2D innehåller metoder för att återge text med formatering som endast beskrivs av en IDWriteTextFormat- eller en IDWriteTextLayout- till en Direct2D-yta.
Återgivningstext som beskrivs av IDWriteTextFormat
Om du vill återge en sträng med hjälp av ett IDWriteTextFormat-objekt för att beskriva formateringen för hela strängen, använder du metoden ID2D1RenderTarget::DrawText som tillhandahålls av Direct2D.
Definiera området för textlayouten genom att hämta dimensionerna för återgivningsområdet och skapa en Direct2D- rektangel som har samma dimensioner.
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_ );Använd metoden ID2D1RenderTarget::DrawText och objektet IDWriteTextFormat för att återge text på skärmen. Metoden ID2D1RenderTarget::DrawText tar följande parametrar:
- En sträng som ska återges.
- En pekare till ett IDWriteTextFormat-gränssnitt.
- En Direct2D- layout rektangel.
- En pekare till ett gränssnitt som exponerar 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. );
Rendera ett IDWriteText-layoutobjekt
Om du vill rita texten med de textlayoutinställningar som anges av objektet IDWriteTextLayout, ändrar du koden i metoden MultiformattedText::DrawText så att den använder IDWriteTextLayout::DrawTextLayout.
Deklarera en D2D1_POINT_2F variabel och sätt den till det övre vänstra hörnet av fönstret.
D2D1_POINT_2F origin = D2D1::Point2F( static_cast<FLOAT>(rc.left / dpiScaleX_), static_cast<FLOAT>(rc.top / dpiScaleY_) );Rita ut texten på skärmen genom att anropa ID2D1RenderTarget::DrawTextLayout för Direct2D rendermålet och skicka IDWriteTextLayout pekaren.
pRT_->DrawTextLayout( origin, pTextLayout_, pBlackBrush_ );