3

我觉得我读过一个类似的问题,但我找不到它,所以如果重复,请关闭。

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

在此处输入图像描述

如您所见,字母被分成两个和三个一组。我读了这篇文章,我认为我已经采取了足够的措施来避免它StringFormat::GenericTypographic,但显然不是。我也在使用TextRenderingHintClearTypeGridFit,因为所有其他人看起来都像垃圾(并且没有TextRenderingHintClearType部分GridFit)。

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

4

1 回答 1

5

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

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

这是一个比较

  • GDI+ ( Graphics.DrawString)
  • GDI ( TextRenderer.DrawText)

在此处输入图像描述

于 2012-02-17T03:08:30.963 回答