我觉得我已经阅读了类似的问题,但我找不到,所以如果重复请关闭。
我正在尝试使用等宽字体(Consolas)绘制带有Graphics::DrawString
的文本。但是,当我绘制文本时,字母间隔不均匀。这是它的样子:
如您所见,字母分为两组和三组。我看过this article,我认为我已经采取了足够的措施来避免使用StringFormat::GenericTypographic
,但显然没有。我也在使用TextRenderingHintClearTypeGridFit
,因为所有其他内容看起来像垃圾(没有TextRenderingHintClearType
部分没有GridFit
。)
如何像使用等宽字体绘制文本的所有其他程序一样绘制文本,使其看起来正确?
答案 0 :(得分:4)
问题在于GDI +使用不同的(以及很久以来被遗弃的)系统来绘制文本。从.NET framework 2.0开始,Microsoft将所有控件更改为实际使用GDI进行文本呈现,而不是GDI +。 GDI中的文本呈现是硬件加速的,并且继续通过字符呈现,Uniscribe,连字进行改进。 GDI +中的文本呈现不是硬件加速,也没有得到任何修复或改进。
GDI也可以绘制抗锯齿,使用CLEARTYPE_QUALITY或ANTIALIASED_QUALITY。
这是
的比较Graphics.DrawString
)TextRenderer.DrawText
)