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