Поделиться через


Сглаживание с помощью текста

Windows GDI+ предоставляет различные уровни качества для рисования текста. Обычно более качественная визуализация требует больших затрат вычислительных ресурсов, чем менее качественная.

Уровень качества является свойством класса Graphics . Чтобы задать уровень качества, вызовите метод Graphics::SetTextRenderingHint объекта Graphics . Метод Graphics::SetTextRenderingHint получает один из элементов перечисления TextRenderingHint , объявленного в Gdiplusenums.h.

GDI+ предоставляет традиционное сглаживание и новый вид сглаживания на основе технологии отображения Microsoft ClearType, доступной только в Windows XP и Windows Server 2003 и более поздних версиях Windows. Сглаживание ClearType повышает удобочитаемость цветных ЖК-мониторов с цифровым интерфейсом, таких как мониторы на ноутбуках и высококачественные плоские настольные дисплеи. Удобочитаемость экранов CRT также несколько улучшена.

ClearType зависит от ориентации и упорядочения полос ЖК-дисплея. В настоящее время 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);
            

На следующем рисунке показаны выходные данные предыдущего кода.

снимок экрана: строка, символы которой имеют зубчатые края, контрастные с ровными краями