首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DirectWrite中呈现混合颜色的文本?

如何在DirectWrite中呈现混合颜色的文本?
EN

Stack Overflow用户
提问于 2009-11-01 08:21:03
回答 1查看 1.9K关注 0票数 7

我想使用DirectWrite进行混合颜色的文本格式化(准确地说,语法突出显示),但似乎找不到一种方法,无论是在布局还是排版选项中。唯一的选择是在渲染文本时传递一个Brush,这对我来说是行不通的,因为我基本上只有一个布局。帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-10 15:54:09

使用IDWriteTextLayout::SetDrawingEffect对子区域应用绘图效果。如果您正在使用DWrite和D2D DrawTextLayout,那么绘制效果将只是一个画笔(例如通过CreateSolidColorBrushID2D1Brush或其中一个渐变画笔)。如果您已经为IDWriteTextLayout::Draw实现了自己的IDWriteTextRenderer,那么绘制效果可以是您所解释的任何效果。在IDWriteTextRenderer::DrawGlyphRun回调中,您可以在drawingEffect参数上调用QueryInterface,或者如果您确定它是您自己的类型,只需直接static_cast它。

代码语言:javascript
复制
// ... 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);
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1656014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档