首页 > 解决方案 > 如何使用 Direct2D 在 DirectWrite 中围绕图像或抽象形状环绕文本?

问题描述

我找不到未渲染到矩形区域的文本块的示例。

理想情况下,如果ID2D1HwndRenderTarget.DrawText()让我提供多边形Geometry而不是矩形会很好。

我尝试添加 Direct2D 层contentBounds,认为它可能会跳过在这些层中呈现文本。它没有按预期工作,它只是阻止渲染到仍然在下面模拟文本的区域。

我还尝试将矩形区域应用于hwnd窗口本身。它也阻止了渲染,但没有移动文本。

标签: winapidirect2ddirectwrite

解决方案


IDWriteTextLayout仅支持矩形布局,但 DirectWrite 支持您通过使用较低级别的功能(文本分析、字形测量、字形整形)可以想到的任何形状。从头开始编写自己的文本布局并非易事,但我编写了一个 Windows 7 SDK 示例,其中包含一个“FlowLayout”,它演示了一个圆形和一些其他简单的形状。它不需要任意几何形状,但您可以根据需要对其进行调整(请参阅 FlowLayoutSource::GetNextRect 以计算每条线的宽度)。

https://github.com/pauldotknopf/WindowsSDK7-Samples/tree/master/multimedia/DirectWrite/CustomLayout在此处输入图像描述


推荐阅读