为DrawTextLayout更改DWriteMeasuringMode

时间:2015-07-18 20:42:42

标签: delphi directx direct2d directwrite

我目前正在使用DrawText在DirectWrite中绘制文本。

在我切换到DrawTextLayout时,我注意到别名字母的渲染并没有很好地完成。

有没有办法像在DrawText中那样将测量模式更改为DWRITE_MEASURING_MODE_GDI_CLASSIC

使用DrawText(和DWRITE_MEASURING_MODE_GDI_CLASSIC)绘制顶部文本,使用DrawTextLayout绘制底部。

http://img5.fotos-hochladen.net/uploads/wwwwwwwww3b9zou6icp.jpg

http://img5.fotos-hochladen.net/uploads/xxxxxxxag8pdm5h2e.jpg

正如您所看到的,底部文字中的字符间距并不好。

如果我将DrawText的测量模式设置为DWRITE_MEASURING_MODE_NATURAL,我会得到与使用TextLayout绘图完全相同的结果。所以问题是测量模式,我不知道如何改变。

1 个答案:

答案 0 :(得分:1)

搞定了。

我完全没有看到这个功能:

DWriteFactory.CreateGdiCompatibleTextLayout

然而,当使用Delphi时,他们搞砸了这里所说的params:

https://msdn.microsoft.com/en-us/library/windows/desktop/dd368192%28v=vs.85%29.aspx

无论出于何种原因,他们都会像2013年报道的那样重新解决问题:

http://qc.embarcadero.com/wc/qcmain.aspx?d=112581