Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Direct2D udostępnia metody renderowania tekstu sformatowanego za pomocą samego IDWriteTextFormat lub IDWriteTextLayout na powierzchnię Direct2D.
Renderowanie tekstu opisanego przez idWriteTextFormat
Aby renderować ciąg przy użyciu obiektu IDWriteTextFormat opisującego formatowanie całego ciągu, użyj metody ID2D1RenderTarget::DrawText dostarczonej przez program Direct2D.
Zdefiniuj obszar układu tekstu, pobierając wymiary obszaru renderowania i tworząc Direct2D prostokąt, który ma te same wymiary.
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_ );Użyj metody ID2D1RenderTarget::DrawText i obiektu IDWriteTextFormat do renderowania tekstu na ekranie. Metoda ID2D1RenderTarget::DrawText przyjmuje następujące parametry:
- Ciąg znaków do renderowania.
- Wskaźnik do interfejsu IDWriteTextFormat.
- Prostokąt układu Direct2D.
- Wskaźnik interfejsu, który uwidacznia 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. );
Renderowanie obiektu układu IDWriteText
Aby narysować tekst z ustawieniami układu tekstu określonymi przez obiekt IDWriteTextLayout, zmień kod w metodzie MultiformattedText::DrawText, aby użyć IDWriteTextLayout::DrawTextLayout.
Deklaruj zmienną D2D1_POINT_2F i ustaw ją na lewy górny punkt okna.
D2D1_POINT_2F origin = D2D1::Point2F( static_cast<FLOAT>(rc.left / dpiScaleX_), static_cast<FLOAT>(rc.top / dpiScaleY_) );Narysuj tekst na ekranie, wywołując obiekt docelowy renderowania ID2D1RenderTarget::D rawTextLayout metody Direct2D renderowania i przekazując wskaźnik IDWriteTextLayout.
pRT_->DrawTextLayout( origin, pTextLayout_, pBlackBrush_ );