GDI +将信件捆绑在一起

时间:2012-02-17 01:01:29

标签: c++ fonts gdi+ typography kerning

我觉得我已经阅读了类似的问题,但我找不到,所以如果重复请关闭。

我正在尝试使用等宽字体(Consolas)绘制带有Graphics::DrawString的文本。但是,当我绘制文本时,字母间隔不均匀。这是它的样子:

enter image description here

如您所见,字母分为两组和三组。我看过this article,我认为我已经采取了足够的措施来避免使用StringFormat::GenericTypographic,但显然没有。我也在使用TextRenderingHintClearTypeGridFit,因为所有其他内容看起来像垃圾(没有TextRenderingHintClearType部分没有GridFit。)

如何像使用等宽字体绘制文本的所有其他程序一样绘制文本,使其看起来正确?

1 个答案:

答案 0 :(得分:4)

问题在于GDI +使用不同的(以及很久以来被遗弃的)系统来绘制文本。从.NET framework 2.0开始,Microsoft将所有控件更改为实际使用GDI进行文本呈现,而不是GDI +。 GDI中的文本呈现是硬件加速的,并且继续通过字符呈现,Uniscribe,连字进行改进。 GDI +中的文本呈现不是硬件加速,也没有得到任何修复或改进。

GDI也可以绘制抗锯齿,使用CLEARTYPE_QUALITY或ANTIALIASED_QUALITY。

这是

的比较
  • GDI +(Graphics.DrawString
  • GDI(TextRenderer.DrawText

enter image description here