使用文本进行抗锯齿

Windows GDI+ 为绘制文本提供各种质量级别。 通常,较高质量呈现比较低质量呈现要花费更多的处理时间。

质量级别是 Graphics 类的一个属性。 若要设置质量级别,请调用 Graphics 对象的 Graphics::SetTextRenderingHint 方法Graphics::SetTextRenderingHint 方法接收在 Gdiplusenums.h 中声明的 TextRenderingHint 枚举的元素之一。

GDI+ 提供传统的抗锯齿和基于 Microsoft ClearType 显示技术的新型抗锯齿,仅适用于 Windows XP 和 Windows Server 2003 及更高版本的 Windows。 ClearType 平滑处理提高了具有数字界面的彩色 LCD 显示器的可读性,例如笔记本电脑中的显示器和高质量的平板桌面显示器。 CRT 屏幕上的可读性也得到了一些改进。

ClearType 取决于 LCD 条纹的方向和顺序。 目前,ClearType 仅针对有序 RGB 的垂直条带实现。 如果你使用的是平板电脑,显示器可以面向任何方向,或者你使用的是可从横向转换为纵向的屏幕,则可能是一个问题。

以下示例绘制具有两种不同质量设置的文本:

FontFamily  fontFamily(L"Times New Roman");
Font        font(&fontFamily, 32, FontStyleRegular, UnitPixel);
SolidBrush  solidBrush(Color(255, 0, 0, 255));
WCHAR       string1[] = L"SingleBitPerPixel";
WCHAR       string2[] = L"AntiAlias";

graphics.SetTextRenderingHint(TextRenderingHintSingleBitPerPixel);
graphics.DrawString(string1, -1, &font, PointF(10.0f, 10.0f), &solidBrush);

graphics.SetTextRenderingHint(TextRenderingHintAntiAlias);
graphics.DrawString(string2, -1, &font, PointF(10.0f, 60.0f), &solidBrush);
            

下图显示了上述代码的输出。

字符串的屏幕截图,该字符串的字符具有交错边缘,与边缘平滑的字符串形成对比