我有一个设备上下文,其中选择了一些字体,我想DrawText
在ID2D1RenderTarget
.
目前,我走以下路线来实现这一目标:
- 获得一个
IDWriteFontFace
viaCreateFontFaceFromHdc
。 IDWriteFont
通过IDWriteFontFace
默认系统字体集合(我通过GetSystemFontCollection
- 请参阅下一步)获取一个。- 获取
IDWriteTextFormat
viaCreateTextFormat
,提供 中指定的参数IDWriteFont
并指定nullptr
为fontCollection
,表示我想使用默认的系统字体集合。 - 传递
IDWriteTextFormat
给DrawText
.
我对此感到奇怪的是,我IDWriteFontFace
在第一步中已经有了一个,显然必须“返回”并要求一个字体集合来获取一个IDWriteFont
,只是为了将它传递给一个DrawTextFormat
,然后可以使用它DrawText
。这似乎是不必要的复杂 - 特别是因为要绘制文本,系统可能不得不降到一个IDWriteFontFace
反正,对吧?
我找到DrawGlyphRun
了 ,但这需要例如 a baselineOrigin
,我必须事先计算(更不用说它glyphRun
本身了)。
ID2D1RenderTarget
如果我已经有了一个,难道没有更简单的方法可以将文本绘制到一个上IDWriteFontFace
吗?