我怎样才能呈现DirectWrite中混合彩色文本?(How can I render mixed-

2019-09-03 07:23发布

我想用DirectWrite的混合色的文本格式(语法高亮,要准确),但似乎无法找到一个方法来做到这一点,无论是在布局或排版选项。 呈现文本,它不适合我,因为我基本上只有一个布局时,唯一的选择是通过画笔。 救命!

Answer 1:

使用IDWriteTextLayout::SetDrawingEffect到子范围应用绘图效果。 如果您使用DWRITE与D2D DrawTextLayout ,这听起来像你,那么拉动效应也只是(如刷子ID2D1Brush通过CreateSolidColorBrush或渐变画笔之一)。 如果你已经实现了自己的IDWriteTextRendererIDWriteTextLayout::Draw ,然后将绘图效果可不管你理解的那样。 在IDWriteTextRenderer::DrawGlyphRun回调,你再调用QueryInterface上drawingEffect参数,或者如果你是一定是你自己的类型,只是直接的static_cast它。

// ... create the colored brushes and determine where to draw ...
wchar_t const* text = L"Red Green";
dwriteFactory->CreateTextLayout(....., OUT &textLayout);

DWRITE_TEXT_RANGE textRange1 = {0,3}, textRange2 = {4,5};

textLayout->SetDrawingEffect(redBrush,  textRange1);
textLayout->SetDrawingEffect(greenBrush, textRange2);

renderer->DrawTextLayout(point, textLayout, defaultBrush);


文章来源: How can I render mixed-colour text in DirectWrite?
标签: directwrite